AutoIt:鼠标指针下的查找窗口

Ran*_*NET 3 autoit

我正在使用AutoIt3,我需要一种让用户选择窗口的方法.在我看来,最快的方法就是让它们指向一个窗口.所以问题是,如何查看鼠标指针下方的窗口?

小智 6

我从一些代码中推断出这个,​​用于选择屏幕上的区域.这只会弹出鼠标下的Window标题(点击Escape退出循环):

#include <WinAPI.au3>
#include <Misc.au3>

Func _WindowFromPoint($iX,$iY)
    Local $stInt64,$aRet,$stPoint=DllStructCreate("long;long")
    DllStructSetData($stPoint,1,$iX)
    DllStructSetData($stPoint,2,$iY)
    $stInt64=DllStructCreate("int64",DllStructGetPtr($stPoint))
    $aRet=DllCall("user32.dll","hwnd","WindowFromPoint","int64",DllStructGetData($stInt64,1))
    If @error Then Return SetError(2,@error,0)
    If $aRet[0]=0 Then Return SetError(3,0,0)
    Return $aRet[0]
EndFunc

Local $hControl, $hWin, $hOldWin, $aMousePos
$hOldWin = ""
While Not _IsPressed("1B")
    $aMousePos = MouseGetPos()
    $hControl=_WindowFromPoint($aMousePos[0],$aMousePos[1])
    ; Since _WindowFromPoint() can return 'sub' windows, or control handles, we should seek the owner window
    $hWin=_WinAPI_GetAncestor($hControl,2)
    If $hWin <> $hOldWin Then
        TrayTip("Window Info","Window under mouse = " & WinGetTitle($hWin), 1)
        $hOldWin = $hWin
    EndIf
    Sleep(10)
WEnd
Run Code Online (Sandbox Code Playgroud)