激活程序的disabled的按钮

2016-01-29 12:52 12 1 收藏

激活程序的disabled的按钮,激活程序的disabled的按钮

【 tulaoshi.com - ASP.NET 】

有些软件如果你不输入正确的注册吗,那该死的“下一步”按钮就一直disable。这个disable按钮使用WindowFromPoint, FindWindowEx均无法得到.不过,使用EnumChildWindows,GetWindow去可以枚举到每一个窗口中的所有控件,包括disabled的控件,找到了句柄,我们就可以操作了 测试环境:WINXP+VB6具体的API函数请参考MSDN. 新建工程,在form中任意添加两个按钮,两个文本框。其中按钮2的Enabled属性为falseform的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 LongPrivate Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As LongPrivate Declare Function EnableWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal fEnable As Long) As LongPrivate Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long Const GW_CHILD = 5Const GW_HWNDNEXT = 2Const WM_GETTEXT = &HDConst WM_ENABLE As Long = &HA Private Sub Command2_Click()Dim tWnd As LongDim bWnd As LongDim lpClassName As StringDim RetVal As LongDim i As IntegerDim mName As String tWnd = FindWindow(vbNullString, "激活程序的disabled的按钮")bWnd = GetWindow(tWnd, GW_CHILD) Do While bWnd <> 0lpClassName = 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)LoopEnd Sub‘单击要激活的句柄Private Sub List2_Click()EnableWindow List2.List(List2.ListIndex), TrueEnd 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 LongPrivate Declare Function EnableWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal fEnable As Long) As LongPrivate 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 Longtwnd = FindWindow(vbNullString, "激活程序的disabled的按钮")EnumChildWindows twnd, AddressOf EnumChildProc, ByVal 0&End Sub Private Sub List1_Click()EnableWindow List1.List(List1.ListIndex), TrueEnd Sub模块Option Explicit Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long Form1.List1.AddItem hwnd '继续枚举 EnumChildProc = 1End Function 好了,运行后,点击按钮,窗口中所有的控件句柄填充到列表框中,然后点击列表框,可以发现disabled的按钮被激活,可以运行了

来源:http://www.tulaoshi.com/n/20160129/1487905.html

延伸阅读
Windows7系统下如何快速激活程序窗口   1、打开控制面板,在控制面板中点击轻松访问。 2、在轻松访问中心下选择更改鼠标的工作方式,在打开的使鼠标更易于使用窗口里,勾选上通过鼠标悬停在窗口上来激活窗口,应用确定后,退出就搞定了。 很多时候用户在使用windows7系统的时候都会遇到需要同时打开多个程序窗口的操作,...
如何在其他程序的窗口上创建按钮并使之能响应 作者:ac952_z_cn 源代码下载 环境:Windows NT/2000 实现方法:采用将动态连接库注入到其他进程中的方法来实现。     为了便于选择窗口,我借用了另一个程序"2000下显示带*号"来选择窗口。 如果要在98下实现你可用钩子同样实现...
标签: Web开发
这里发现可以采用三种的变通方法将置为disabled的元素状态改为enabled。 第一种:改变disabled的boolean状态,具体代码及解释如下: 代码如下: $("button:eq(2)").click(function(){ var text2=$("input:text:eq(2)"); if(text2.attr("disabled")==false){ //通过设置disabled的boolean属性将第三个text输入框disabled属性置为true tex...
标签: PS PS教程
[next] [next] [next]
  Public Class mybuttondatagridtablestyle1     Inherits System.Windows.Forms.DataGridTextBoxColumn   #Region " Windows 窗体设计器生成的代码 "       Public Sub New()         MyBase.New()    &nb...

经验教程

77

收藏

92
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部