ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何获取桌面所有一级子窗口的句柄和标题文本呢?

如何获取桌面所有一级子窗口的句柄和标题文本呢?

作者:绿色风 分类: 时间:2022-08-17 浏览:133
楼主
0Mouse
Q:如何获取桌面所有一级子窗口的句柄和标题文本呢?
A:使用API函数GetWindow先获取第一个子窗口句柄,再通过循环枚举其它子窗口,代码如下:
  1. Private Declare Function GetDesktopWindow Lib "user32" () As Long
  2. Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
  3. Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
  4.     (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
  5.    
  6. Private Const GW_CHILD = 5
  7. Private Const GW_HWNDNEXT = 2

  8. Sub 获取桌面所有一级子窗口的句柄和标题文本()
  9.     Dim hWnd    As Long
  10.     Dim iNum    As Long
  11.     Dim lpStr   As String * 256
  12.     Dim lgh     As Long
  13.     hWnd = GetWindow(GetDesktopWindow, GW_CHILD)    '取得第1个子窗口句柄
  14.     Do                                              '循环枚举
  15.         If hWnd = 0 Then Exit Do                    '句柄为0时结束循环
  16.         iNum = iNum + 1                             '子窗口计数
  17.         Cells(iNum, 1) = iNum                       '记录子窗口序号
  18.         Cells(iNum, 2) = hWnd                       '记录子窗口句柄
  19.         lgh = GetWindowText(hWnd, lpStr, 255)       '获取窗口标题文本的长度
  20.         Cells(iNum, 3) = Left(lpStr, lgh)           '记录子窗口标题文本
  21.         hWnd = GetWindow(hWnd, GW_HWNDNEXT)         '查找下一个子窗口
  22.     Loop
  23. End Sub

附件:
获取桌面所有一级子窗口的句柄和标题文本.rar
2楼
335081548
谢谢分享
3楼
老糊涂
学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap