Как я могу передать прерванный ключ до приложения в автогорячей клавише

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

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

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

^l::
IfWinExist ahk_class MozillaUIWindowClass
{
    WinActivate
    Send ~^l
}
11
задан melpomene 19 July 2015 в 11:35
поделиться

2 ответа

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

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


Из справки AutoHotkey:

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


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

$^l::
IfWinExist ahk_class MozillaUIWindowClass
{
  IfWinActive ahk_class MozillaUIWindowClass
  {
    Send ^l
  }
  else
  {
    WinActivate
    Send ^t
  }
}
19
ответ дан 3 December 2019 в 06:20
поделиться

Я не думаю, что тильда применима в этом случае, но 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
0
ответ дан 3 December 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: