Подтвердить что ты не робот

Как передать перехваченный ключ в приложение в autohotkey

Я постоянно активирую Firefox, а затем нажимаю Ctrl + L, чтобы сфокусировать панель местоположений и выполнить поиск или ввести URL-адрес.

В идеале я могу быть в любом приложении и нажимать Ctrl + L, а Firefox будет активирован с помощью ориентированной и готовой к вводу строки местоположения. В сценариях AutoHotkey.

Я пробовал это и, похоже, не работает. Из того, что я читал, тильда - "проход":

^l::
IfWinExist ahk_class MozillaUIWindowClass
{
    WinActivate
    Send ~^l
}
4b9b3361

Ответ 1

Закончилось получение ответа на этот вопрос непосредственно на форуме AHK.
Для этого требуется использование модификатора знака доллара ($).

$^l::
IfWinExist ahk_class MozillaUIWindowClass
{
    WinActivate
    Send ^l
}  


Из справки AutoHotkey:

($) Обычно это необходимо только в том случае, если script использует команду "Отправить" для отправки ключей, которые содержат самую горячую клавишу, что в противном случае может вызвать ее запуск.


И вот полный script я закончил использовать. Если Firefox уже активен, Ctrl + L просто передается и ведет себя как обычно. Если за пределами Firefox при нажатии Ctrl + L, Firefox активируется и создается новая вкладка; готов к поиску.

$^l::
IfWinExist ahk_class MozillaUIWindowClass
{
  IfWinActive ahk_class MozillaUIWindowClass
  {
    Send ^l
  }
  else
  {
    WinActivate
    Send ^t
  }
}

Ответ 2

Я не думаю, что тильда применяется в этом экземпляре, но Send может отправлять ключи быстрее, чем фактически активируется окно, поэтому что-то вроде этого может быть лучше:

SetKeyDelay, 10, 10 ; adds 10ms delay between and during keystrokes
IfWinExist, ahk_class MozillaUIWindowClass
{
   WinActivate,
   WinWaitActive, ; waits until window is active
   Send, ^l
}
return