如何找到 WinActivate 参数的名称

How to find name for argument of WinActivate

我正在编写将在 Microsoft Edge 中填写表单的脚本。我知道我应该使用 WinActivate 来改变焦点,但我不知道如何找出参数应该是什么?例如,如果我去 Whosebug,我可以猜测它会像 Stack Overflow - Microsoft Edge 但如果标题较长,它会在工具栏中被截断,老实说,我不知道在哪里可以看到完整的标题一个过程?我试过任务管理器。

有没有更好的方法?依赖程序的标题似乎有点 hacky,尤其是当网站的标题决定它时。

基本上我在问,你如何使用 WinActive 来改变焦点?

Process, Exist, MicrosoftEdge.exe
EdgePID = %ErrorLevel%
if( EdgePID )
{
    MsgBox, Edge is running, with PID: %EdgePID%
}
WinGetTitle, Title , ahk_pid %EdgePID%
MsgBox, Title: %Title%
IfWinExist, %Title%
    WinActivate ; this doesn't work

您可以使用应始终相同的进程名称。我假设 Microsoft Edge 的名称是 MicrosoftEdge.exe,如果您的进程名称不同,请更改它。

首先获取进程PID,存储在ErrorLevel:

Process, Exist, MicrosoftEdge.exe
EdgePID = %ErrorLevel%
if( EdgePID 
{
    MsgBox, Edge is running, with PID: %EdgePID%
}

然后获取该进程的window标题,使用特殊命令ahk_pid

WinGetTitle, Title , ahk_pid %EdgePID%
MsgBox, Title: %Title%

window可以用同样的方法激活:

WinActivate, ahk_pid %EdgePID%

或者直接使用进程名称:

WinActivate, ahk_exe MicrosoftEdge.exe