找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4795|回复: 1

[其它源码] 根据软件标题枚举该窗口下所有控件句柄和标题

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2012-4-21 09:12:01 | 显示全部楼层 |阅读模式
  1. Option Explicit
  2. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  3. Private Declare Function GetDesktopWindow Lib "user32" () As Long
  4. Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
  5. Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
  6. Const GW_CHILD = 5
  7. Const GW_HWNDNEXT = &H2
  8. Dim HwndVal&
  9. Private Sub Command1_Click()
  10.    Call GetHandle("计算器")
  11. End Sub

  12. Public Function GetHandle(Title As String) As Long
  13.    Dim Tmp$, hwnd&, lngProcID&
  14.    Dim StrTitle As String * 255      '用来存储窗口的标题
  15.    HwndVal = FindWindow(vbNullString, Title) 'GetDesktopWindow()  '取得桌面窗口
  16.    HwndVal = GetWindow(HwndVal, GW_CHILD) '取得桌面窗口的第一个子窗口
  17.    List1.Clear
  18.    Do While HwndVal <> 0  '通过循环枚举所有的窗口
  19.       GetWindowText HwndVal, StrTitle, Len(StrTitle)  '取得下一个窗口的标题,并写入到列表框中
  20.       If Left(StrTitle, 1) <> vbNullChar Then
  21.          Tmp = Left(StrTitle, InStr(StrTitle, vbNullChar))
  22.          List1.AddItem CStr(HwndVal) & "---" & Tmp
  23.          If Left(Tmp, Len(Title)) = Title Then GetHandle = HwndVal
  24.       End If
  25.       HwndVal = GetWindow(HwndVal, GW_HWNDNEXT)  '调用GetWindow函数,来取得下一个窗口
  26.    Loop
  27. End Function
复制代码
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

 楼主| 发表于 2012-4-21 09:13:20 | 显示全部楼层

GetWindow使用说明

VB声明
Declare Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
说明
获得一个窗口的句柄,该窗口与某源窗口有特定的关系
返回值
Long,由wCmd决定的一个窗口的句柄。如没有找到相符窗口,或者遇到错误,则返回零值。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,源窗口
wCmd Long,指定结果窗口与源窗口的关系,它们建立在下述常数基础上:
GW_CHILD 寻找源窗口的第一个子窗口
GW_HWNDFIRST 为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口
GW_HWNDLAST 为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口
GW_HWNDNEXT 为源窗口寻找下一个兄弟窗口
GW_HWNDPREV 为源窗口寻找前一个兄弟窗口
GW_OWNER 寻找窗口的所有者
注解
兄弟或同级是指在整个分级结构中位于同一级别的窗口。如某个窗口有五个子窗口,那五个窗口就是兄弟窗口。尽管GetWindow可用于枚举窗口,但倘若要在枚举过程中重新定位、创建和清除窗口,那么enumwindows喉EnumChildWindows更为可靠

来源:http://www.vbgood.com/api-getwindow.html
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表