Прежде всего, что не так в вашем скрипте:
Вы используете WinGet с подкомандой PID .
. Принимает следующие параметры:
WinGet, OutputVar, PID [, WinTitle, WinText, ExcludeTitle, ExcludeText]
Как видите, последние два аргумента, которые вы передаете, не имеют смысла. Вы пытаетесь сопоставить окно с названием «ProcessName», и оно также должно содержать текст «A».
Если вы хотите получить имя процесса, вы должны использовать подкоманду WinGet
для этого так:
WinGet, output, ProcessName, A ;A, as a WinTitle, means the currently active window
MsgBox, % output
Однако нет необходимости go об этом таким образом. Есть более простые способы.
Сейчас я покажу и объясню лучший способ создания контекстно-зависимой горячей клавиши с помощью директив #.
В частности, #IfWinNotActive
- это то, что вы хотите использовать .
В параметре WinTitle мы можем обращаться к окну проводника напрямую через имя процесса с помощью ahk_exe
.
#IfWinNotActive, ahk_exe explorer.exe
Pause::
WinGet, win_pid, PID, A
Run, taskkill /f /pid %win_pid%
return
#IfWinNotActive
И теперь у нас есть горячая клавиша, которая срабатывает только в том случае, если активное окно не является проводником.