#autohotkey
#autohotkey
Вопрос:
Проще говоря, я хочу, чтобы Ctrl Alt T активировали окно терминала Windows. Ранее я использовал это:
^!T::
if WinExist("Windows PowerShell")
WinActivate
else
Run, wt
Return
Но это больше не сокращает его, потому что терминал Windows меняет свой заголовок, когда я использую Posh Git.
Итак, мне нужно активировать окно в любом окне с именем процесса «WindowsTerminal.exe «.
Я пробовал это, но по какой-то причине он не распознает правильное окно:
^!T::
if WinExist(ahk_exe "WindowsTerminal.exe")
WinActivate
else
Run, wt
Return
Ответ №1:
Ваш синтаксис для вызова WinExist с именем процесса / exe неверен
Вместо:
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
Комментарии:
1. Идеальный ответ. Я не знал о autohotkey.com/docs/misc/WinTitle.htm#LastFoundWindow
Ответ №2:
Решение:
^!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, но меня больше не беспокоит этот грубый синтаксис.
Комментарии:
1. Да, есть более короткий способ использовать winexist вместо зацикливания с помощью winget см. Принятый ответ