如何使用我的手柄号码?

How can I use my handle number?

我有 2 个 windows 具有相同的标题。所以,我必须通过句柄来检测它们。他们也用了很长时间从我的代码开始。所以我必须先开始它们,然后通过检测它们的句柄来调试代码的中间部分。它们之间的代码是不同的,所以我必须手工指定句柄。但是,非常感谢。

我通过 Au3Info 应用程序获得了自己的 window 句柄号。

但是当我这样使用时它不起作用:

;run Au3Info.exe to get calc.exe window's handle number
;then activate minimizing calc.exe by copied window's handle number  from  Au3Info.exe

Run("C:\Program Files\AutoIt3\Au3Info.exe")
WinWaitActive("(Frozen) AutoIt v3 Window Info")
WinSetOnTop("(Frozen) AutoIt v3 Window Info", "", 0)
WinMove("(Frozen) AutoIt v3 Window Info","",0,0)
Run("calc.exe")
WinWaitActive("Calculator")
Winmove("Calculator","",500,500)
WinActivate("(Frozen) AutoIt v3 Window Info")
WinWaitActive("(Frozen) AutoIt v3 Window Info")
MouseClickDrag("left",261, 156,505,505)
MouseClick("left",136, 374,10) ;copy calculator window's handle number form Au3Info
WinSetState ( "Calculator", "",   @SW_MINIMIZE  )
WinActivate(ClipGet ( ))

;$hWnd=0x004D01DE ; window's handle number copy from Au3Info
;ConsoleWriteError(@crlf & WinActivate($hWnd) & @crlf)

以上,我想激活当前session 0x004D01DE-handle windows,但是没有用,返回给我“0”,没有找到具体的window。虽然 window 的句柄号还是一样,但当我重新检查时。

我调试了我的脚本的某些部分,所以我必须自己复制特定句柄 window 的号码,以节省很长一段时间用于从完整代码进行调试。

我是否正确使用了 window 的句柄号?

答案是HWnd()。只需将 WinActivate(ClipGet()) 更改为 WinActivate(HWnd(ClipGet())).

我认为没有理由使用 Au3Info.exeWinWaitActive 已经 returns 句柄。只需使用它:

Run("calc.exe")
$hCalc=WinWaitActive("Calculator")
MsgBox(0,"Handle","Calculatior's handle is: " & $hCalc)
WinMove($hCalc,"",500,500)
WinSetState($hCalc,"",@SW_MINIMIZE)

另一种可能是WinGetHandle