先看执行效果:
 说明:本人喜欢玩按键精灵,用按键自带插件的即可遍历后台句柄,可以刷出你所针对的所有游戏窗口句柄,后台无一遗漏。
本帖隐藏的内容- Dim i, Layer(100)
- i = 1
- HwndList
- Function HwndList
- Do
- Layer(i) = Plugin.Window.FindEx(Layer(i - 1), Layer(i), 0, 0)
- If Layer(i) > 0 Then
- sClass = Plugin.Window.GetClass(Layer(i))
- sText = Plugin.Window.GetText(Layer(i))
- Report = Space(i * 2) & Right("0000" & Layer(i), 8) & " 类名: " & sClass & " 标题: " & sText
- TracePrint Report
- i = i + 1
- HwndList
- Else
- i = i - 1
- Exit Do
- End If
- Loop
- 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句柄的实例:- Dim i, Layer(100)
- i = 1
- HwndList
- Function HwndList
- Do
- Layer(i) = Plugin.Window.FindEx(Layer(i - 1), Layer(i), 0, 0)
- If Layer(i) > 0 Then
- sClass = Plugin.Window.GetClass(Layer(i))
- sText = Plugin.Window.GetText(Layer(i))
- If sText = "QQ2013" Then
- Report = Space(i * 2) & Right("0000" & Layer(i), 8) & " 类名: " & sClass & " 标题: " & sText
- TracePrint Report
- End If
- i = i + 1
- HwndList
- Else
- i = i - 1
- Exit Do
- End If
- Loop
- End Function
复制代码 调试结果为 第12行: 00199566 类名: TXGuiFoundation 标题: QQ2013
后台发送文本内容到Excel的实例: 打开Excel表格,默认表格为Book1- Dim i, Layer(100)
- i = 1
- HwndList
- Function HwndList
- Do
- Layer(i) = Plugin.Window.FindEx(Layer(i - 1), Layer(i), 0, 0)
- If Layer(i) > 0 Then
- sClass = Plugin.Window.GetClass(Layer(i))
- sText = Plugin.Window.GetText(Layer(i))
- If sText = "Book1" Then
- Call Plugin.Bkgnd.SendString(Layer(i), "后台发送句柄为:" & Layer(i))
- End If
- i = i + 1
- HwndList
- Else
- i = i - 1
- Exit Do
- End If
- Loop
- End Function
复制代码 现在有很多应用程序和游戏不能窗口最小化后台,老杯具的事情了 。
|