按进程名称在 window 上 WinActivate?
WinActivate on window by process name?
简单地说,我希望 Ctrl+Alt+T 激活 Windows 终端 window。以前我用过这个:
^!T::
if WinExist("Windows PowerShell")
WinActivate
else
Run, wt
Return
但这不再有效,因为 Windows 终端在我使用 Posh Git 时改变了它的标题 Git。
所以我需要在进程名称为“WindowsTerminal.exe”的任何 window 上激活 window。
我已经试过了,但出于某种原因它无法识别正确的 window:
^!T::
if WinExist(ahk_exe "WindowsTerminal.exe")
WinActivate
else
Run, wt
Return
解决方案:
^!T::
_WindowId = -1
WinGet _Windows, List
Loop %_Windows%
{
_Id := _Windows%A_Index%
WinGet, _PName , ProcessName, ahk_id %_Id%
if (_PName == "WindowsTerminal.exe")
{
_WindowId = %_Id%
break
}
}
if (_WindowId != -1)
{
WinActivate, ahk_id %_WindowId%
} else
{
Run, wt
}
Return
使用 AHK 可能有更短的方法,但我不能再为这种粗俗的语法烦恼了。
您使用进程/exe 名称调用 WinExist 的语法不正确
而不是:
if WinExist(ahk_exe "WindowsTerminal.exe")
您还需要将其 ahk_exe
部分包含在引号内。
像这样:
if WinExist("ahk_exe WindowsTerminal.exe")
最终代码:
^!T::
if WinExist("ahk_exe WindowsTerminal.exe")
WinActivate
else
Run, wt
Return
简单地说,我希望 Ctrl+Alt+T 激活 Windows 终端 window。以前我用过这个:
^!T::
if WinExist("Windows PowerShell")
WinActivate
else
Run, wt
Return
但这不再有效,因为 Windows 终端在我使用 Posh Git 时改变了它的标题 Git。
所以我需要在进程名称为“WindowsTerminal.exe”的任何 window 上激活 window。
我已经试过了,但出于某种原因它无法识别正确的 window:
^!T::
if WinExist(ahk_exe "WindowsTerminal.exe")
WinActivate
else
Run, wt
Return
解决方案:
^!T::
_WindowId = -1
WinGet _Windows, List
Loop %_Windows%
{
_Id := _Windows%A_Index%
WinGet, _PName , ProcessName, ahk_id %_Id%
if (_PName == "WindowsTerminal.exe")
{
_WindowId = %_Id%
break
}
}
if (_WindowId != -1)
{
WinActivate, ahk_id %_WindowId%
} else
{
Run, wt
}
Return
使用 AHK 可能有更短的方法,但我不能再为这种粗俗的语法烦恼了。
您使用进程/exe 名称调用 WinExist 的语法不正确
而不是:
if WinExist(ahk_exe "WindowsTerminal.exe")
您还需要将其 ahk_exe
部分包含在引号内。
像这样:
if WinExist("ahk_exe WindowsTerminal.exe")
最终代码:
^!T::
if WinExist("ahk_exe WindowsTerminal.exe")
WinActivate
else
Run, wt
Return