电竞比分网-中国电竞赛事及体育赛事平台

分享

按鍵精靈遍歷所有父子窗口句柄,帶注釋[更新]

 淳爺們 2013-08-28
先看執(zhí)行效果:
HwndEx.gif
說明:本人喜歡玩按鍵精靈,用按鍵自帶插件的即可遍歷后臺句柄,可以刷出你所針對的所有游戲窗口句柄,后臺無一遺漏。

本帖隱藏的內(nèi)容

  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
調(diào)用自定義函數(shù)
·Function HwndList
自定義函數(shù)
·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
結(jié)果等于取右邊8個字符當前窗口句柄值
·TracePrint Report
調(diào)試窗口測試結(jié)果
·i = i + 1
準備進入下一級子窗口
·HwndList
再一次調(diào)用自定義函數(shù)
·Else
否則
·i = i - 1
返回上一級
·Exit Do
退出當前循環(huán),并非退出全體循環(huán)。如果當前子窗口在10級情況下,要執(zhí)行10次的i - 1才能結(jié)束自定義函數(shù)HwndList
·End If
條件結(jié)束
·Loop
循環(huán)結(jié)束
·End Function
函數(shù)結(jié)束


查找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
復制代碼
調(diào)試結(jié)果為 第12行: 00199566 類名: TXGuiFoundation 標題: QQ2013

后臺發(fā)送文本內(nèi)容到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), "后臺發(fā)送句柄為:" & 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
復制代碼
現(xiàn)在有很多應用程序和游戲不能窗口最小化后臺,老杯具的事情了

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多