分享
 
 
 

激活程序中被disabled掉的按钮

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

有些软件如果你不输入正确的注册吗,那该死的“下一步”按钮就一直disable。这个disable按钮使用WindowFromPoint, FindWindowEx均无法得到.

不过,使用EnumChildWindows,GetWindow去可以枚举到每一个窗口中的所有控件,包括disabled的控件,找到了句柄,我们就可以操作了

测试环境:WINXP+VB6

具体的API函数请参考MSDN.

新建工程,在form中任意添加两个按钮,两个文本框。其中按钮2的Enabled属性为false

form的Caption设为” 激活程序的disabled的按钮”.

编译后,运行。

1.我们先看看使用GetWindow枚举句柄的

我们先用FindWindow找到form窗口,然后找到窗口中所有的子控件句柄,然后使用EnableWindow函数激活

添加1个按钮,2个list控件。

Option Explicit

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Private Declare Function EnableWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal fEnable As Long) As Long

Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long

Const GW_CHILD = 5

Const GW_HWNDNEXT = 2

Const WM_GETTEXT = &HD

Const WM_ENABLE As Long = &HA

Private Sub Command2_Click()

Dim tWnd As Long

Dim bWnd As Long

Dim lpClassName As String

Dim RetVal As Long

Dim i As Integer

Dim mName As String

tWnd = FindWindow(vbNullString, "激活程序的disabled的按钮")

bWnd = GetWindow(tWnd, GW_CHILD)

Do While bWnd 0

lpClassName = Space(256)

‘这里得到类名主要是为了可以看出bWnd所对应的控件

RetVal = GetClassName(bWnd, lpClassName, 256)

i = InStr(1, lpClassName, Chr(0))

mName = Left(lpClassName, i - 1)

List1.AddItem bWnd & "

" & mName

;list2主要是为了方便操作

List2.AddItem bWnd

‘继续寻找下一个控件

bWnd = GetWindow(bWnd, GW_HWNDNEXT)

Loop

End Sub

‘单击要激活的句柄

Private Sub List2_Click()

EnableWindow List2.List(List2.ListIndex), True

End Sub

好了,运行后,点击按钮,窗口中所有的控件句柄填充到列表框中,然后点击列表框,可以发现disabled的按钮被激活,可以运行了

2.使用EnumChildWindows来枚举

函数功能:为指定的父窗口枚举子窗口

Private Declare Function EnumChildWindows Lib "user32" Alias "EnumChildWindows" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

【参数表】

hWndParent -----

Long,欲枚举子窗口的父窗口的句柄

lpEnumFunc -----

Long,为每个子窗口调用的函数的指针。用AddressOf运算符获得函数在一个标准模块中的地址

代码如下:

窗口

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function EnableWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal fEnable As Long) As Long

Private Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

Const WM_ENABLE As Long = &HA

Private Sub Command1_Click()

Dim twnd As Long

twnd = FindWindow(vbNullString, "激活程序的disabled的按钮")

EnumChildWindows twnd, AddressOf EnumChildProc, ByVal 0&

End Sub

Private Sub List1_Click()

EnableWindow List1.List(List1.ListIndex), True

End Sub

模块

Option Explicit

Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long

Form1.List1.AddItem hwnd

'继续枚举

EnumChildProc = 1

End Function

好了,运行后,点击按钮,窗口中所有的控件句柄填充到列表框中,然后点击列表框,可以发现disabled的按钮被激活,可以运行了

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有