激活程序的disabled的按钮

原创 2004年09月08日 23:28:00

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

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

       测试环境:WINXP+VB6

具体的API函数请参考MSDN.

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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

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

编译后,运行。

 

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

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

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

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的按钮被激活,可以运行了

Bootstrap3 按钮-禁用状态

通过为按钮的背景设置 opacity 属性就可以呈现出无法点击的效果。button 元素 为 元素添加 disabled 属性,使其表现出禁用状态。Primary button ...
  • duruiqi_fx
  • duruiqi_fx
  • 2016年12月30日 14:08
  • 14674

HTML disabled属性的启用和禁止

HTML中的input元素、button元素、option元素等都具有一个disabled属性。  当赋予该属性时该元素将变得不可交互,如下代码所示:  Html代码   i...
  • linshichen
  • linshichen
  • 2016年05月31日 17:03
  • 4008

AngularJS使用 ng-disabled 属性与ng-model搭配,实现禁用button效果

在输入框内无文字时,提交button是不能点击状态,在输入文字后会变为可点击状态 实现方法: ...
  • ywl570717586
  • ywl570717586
  • 2015年09月18日 16:28
  • 25645

前端笔记——如何控制表单控件中的disabled

0.前言     本文主要说明如何使能或禁止表单控件。表单控件具有disabled属性,通过设置该属性可以禁止所有的input控件,input的更多属性请参考资料【1】。下面就通过一个简单的例子说明...
  • xukai871105
  • xukai871105
  • 2014年06月26日 22:13
  • 2794

表单控件状态(禁用状态)

Bootstrap框架的表单控件的禁用状态和普通的表单禁用状态实现方法是一样的,在相应的表单控件上添加属性“disabled”。和其他表单的禁用状态不同的是,Bootstrap框架做了一些样式风格的处...
  • lengyuewusheng99
  • lengyuewusheng99
  • 2017年05月03日 12:43
  • 181

jquery 将disabled的元素置为enabled的三种方法

在jquery中可以通过jqueryObj.attr("disabled","disabled")将页面中某个元素置为不可编辑或触发状态,但是在jquery的API reference中并没说明怎么将...
  • sinat_17775997
  • sinat_17775997
  • 2016年08月28日 16:56
  • 915

input中disabled,readonly解决办法及区别

input的字段当为diabled时时无法获取数值得,所以最近不要用这个,我们可以用readonly带替代,即可解决这类问题。        放在form表单中提交后得不到该值。 ...
  • fangqun663775
  • fangqun663775
  • 2013年06月29日 10:28
  • 2215

表单input中disabled提交后得不到值的解决办法

表单input中disabled提交后得不到值的解决办法
  • u014185140
  • u014185140
  • 2016年07月21日 17:43
  • 13708

MFC编程之控件的禁用与激活

MFC控件的激活与禁用
  • enjoy5512
  • enjoy5512
  • 2016年05月31日 15:40
  • 1233

正则表达式与激活按钮

javascript 正则表达式 学习链接:http://www.runoob.com/regexp/regexp-syntax.htmlfunction CheckMail(mail) { va...
  • qq_31109263
  • qq_31109263
  • 2016年11月10日 12:16
  • 34
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:激活程序的disabled的按钮
举报原因:
原因补充:

(最多只允许输入30个字)