AHK: назначить горячую клавишу только для одного конкретного активного окна, а не для других
Я только что сделал кусок кода, который делает следующее. Когда я делаю выделение мышью в Firefox или EndNote, скрипт отправляет Ctrl + c и проверяет буфер обмена на соответствие регулярному выражению. Если есть совпадение, он изменяет содержимое буфера обмена и показывает подсказку. Это прекрасно работает для этих двух программ. Adobe Acrobat иногда показывает ошибку при отправке Ctrl + c (даже если пользователь нажимает ctrl-c, Acrobat иногда показывает знаменитое «Произошла ошибка при копировании в буфер обмена. Произошла внутренняя ошибка). Поэтому он решил назначить Горячая клавиша F9, но она работает для всех программ, а не только для Acrobat. Как назначить горячую клавишу только для одного окна - Acrobat? Вот мой код. Я знаю, что это плохо - я новичок в программировании в целом, и в AHK в конкретный.
#If WinActive("ahk_exe firefox.exe") || WinActive("ahk_exe EndNote.exe") || WinActive("ahk_exe Acrobat.exe")
if WinActive("ahk_exe Acrobat.exe")
F9::
{
Clipboard:=""
send,^c
ClipWait, 1
ToolTip % Clipboard := RegExReplace(Clipboard, "\r\n", " ")
SetTimer, ToolTipOff, -1000
}
return
~LButton::
now := A_TickCount
while GetKeyState("LButton", "P")
continue
if (A_TickCount-now > 500 )
{
Send ^c
if WinActive("ahk_exe firefox.exe")
{
If RegExMatch(Clipboard, "[0-9]\.\s[A-Za-z,]*\s[A-Za-z]*")
{
regex := "[0-9]\.\s*|\s?\([^)]*\)|\."
replace := ""
}
else If RegExMatch(Clipboard,"[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}")
{
Clipboard := RegExReplace(Clipboard, "^0", "")
regex := "\/"
replace := "."
}
else return
}
else if WinActive("ahk_exe EndNote.exe")
{
If RegExMatch(Clipboard, "[a-z]+\,\s[A-Z0-9‘“]")
{
regex := "\??!?\:|\?|!"
replace := "."
}
else return
}
ToolTip % Clipboard := RegExReplace(Clipboard, regex, replace)
SetTimer, ToolTipOff, -1000
}
return
#If
ToolTipOff:
ToolTip
return