分享

按键精灵遍历所有父子窗口句柄,带注释[更新]

 淳爷们 2013-08-28
先看执行效果:
HwndEx.gif
说明:本人喜欢玩按键精灵,用按键自带插件的即可遍历后台句柄,可以刷出你所针对的所有游戏窗口句柄,后台无一遗漏。

本帖隐藏的内容

  1. Dim i, Layer(100)
  2. i = 1
  3. HwndList
  4. Function HwndList
  5. Do
  6. Layer(i) = Plugin.Window.FindEx(Layer(i - 1), Layer(i), 0, 0)
  7. If Layer(i) > 0 Then
  8. sClass = Plugin.Window.GetClass(Layer(i))
  9. sText = Plugin.Window.GetText(Layer(i))
  10. Report = Space(i * 2) & Right("0000" & Layer(i), 8) & "  类名: " & sClass & "  标题: " & sText
  11. TracePrint Report 
  12. i = i + 1
  13. HwndList
  14. Else 
  15. i = i - 1
  16. Exit Do 
  17. End If
  18. Loop
  19. End Function
复制代码
注释说明:
·Layer(100)
句柄窗口100级,其实设置20级也绰绰有余了。
可以打抓抓中的句柄测试,依次点击展开带“+”的句柄,看看有没有那个父窗口带子窗口1级、2级、3级……满20级的!
·i=1
设置i值为1
·HwndList
调用自定义函数
·Function HwndList
自定义函数
·Do
循环开始
·Layer(i) = Plugin.Window.FindEx(Layer(i - 1), Layer(i), 0, 0)
被查找窗口句柄父窗口Layer(i - 1)值为0,0代表当前父窗口;子窗口Layer(i)值为1,第1个子窗
·If Layer(i) > 0 Then
如果子窗口值大于0,表明子窗口存在
·sClass = Plugin.Window.GetClass(Layer(i))
当前窗口类名赋值给sClass
·sText = Plugin.Window.GetText(Layer(i))
当前窗口标题赋值给sText
·Report = Space(i * 2) & Right("0000" & Layer(i), 8) & "  类名: " & sClass & "  标题: " & sText
结果等于取右边8个字符当前窗口句柄值
·TracePrint Report
调试窗口测试结果
·i = i + 1
准备进入下一级子窗口
·HwndList
再一次调用自定义函数
·Else
否则
·i = i - 1
返回上一级
·Exit Do
退出当前循环,并非退出全体循环。如果当前子窗口在10级情况下,要执行10次的i - 1才能结束自定义函数HwndList
·End If
条件结束
·Loop
循环结束
·End Function
函数结束


查找QQ2013句柄的实例:
  1. Dim i, Layer(100)
  2. i = 1
  3. HwndList
  4. Function HwndList
  5. Do
  6. Layer(i) = Plugin.Window.FindEx(Layer(i - 1), Layer(i), 0, 0)
  7. If Layer(i) > 0 Then
  8. sClass = Plugin.Window.GetClass(Layer(i))
  9. sText = Plugin.Window.GetText(Layer(i))
  10. If sText = "QQ2013" Then
  11. Report = Space(i * 2) & Right("0000" & Layer(i), 8) & "  类名: " & sClass & "  标题: " & sText
  12. TracePrint Report
  13. End If
  14. i = i + 1
  15. HwndList
  16. Else 
  17. i = i - 1
  18. Exit Do 
  19. End If
  20. Loop
  21. End Function
复制代码
调试结果为 第12行: 00199566 类名: TXGuiFoundation 标题: QQ2013

后台发送文本内容到Excel的实例:
打开Excel表格,默认表格为Book1
  1. Dim i, Layer(100)
  2. i = 1
  3. HwndList
  4. Function HwndList
  5. Do
  6. Layer(i) = Plugin.Window.FindEx(Layer(i - 1), Layer(i), 0, 0)
  7. If Layer(i) > 0 Then
  8. sClass = Plugin.Window.GetClass(Layer(i))
  9. sText = Plugin.Window.GetText(Layer(i))
  10. If sText = "Book1" Then
  11. Call Plugin.Bkgnd.SendString(Layer(i), "后台发送句柄为:" & Layer(i))
  12. End If
  13. i = i + 1
  14. HwndList
  15. Else 
  16. i = i - 1
  17. Exit Do 
  18. End If
  19. Loop
  20. End Function
复制代码
现在有很多应用程序和游戏不能窗口最小化后台,老杯具的事情了

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多