先看執(zhí)行效果:
 說明:本人喜歡玩按鍵精靈,用按鍵自帶插件的即可遍歷后臺句柄,可以刷出你所針對的所有游戲窗口句柄,后臺無一遺漏。
本帖隱藏的內容- 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 循環(huán)開始 ·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 退出當前循環(huán),并非退出全體循環(huán)。如果當前子窗口在10級情況下,要執(zhí)行10次的i - 1才能結束自定義函數HwndList ·End If 條件結束 ·Loop 循環(huán)結束 ·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
后臺發(fā)送文本內容到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), "后臺發(fā)送句柄為:" & Layer(i))
- End If
- i = i + 1
- HwndList
- Else
- i = i - 1
- Exit Do
- End If
- Loop
- End Function
復制代碼 現在有很多應用程序和游戲不能窗口最小化后臺,老杯具的事情了 。
|