как сделать окно в фокусе в autohotkey - PullRequest
0 голосов
/ 27 февраля 2019

Мне было интересно, можно ли создать сценарий, в котором фокусируется одно конкретное приложение каждые 12 минут, а затем мгновенно минимизируется.

Итак, подведем итог:

  • wait12 минут
  • приведение приложения в фокус
  • сведение к минимуму (или перефокусировка последнего использованного приложения, если это возможно?)

До сих пор я обнаружил, что минимизацияпредыдущее приложение снова окажется в фокусе.

1 Ответ

0 голосов
/ 27 февраля 2019

Да, это определенно то, что вы можете сделать в AutoHotkey.Ниже приведены ссылки на справочный документ AutoHotkey для указанных вами элементов.

  • подождите 12 минут:

У вас есть как минимум пара вариантов для этого.Вы можете использовать комбинацию Loop и Sleep или SetTimer отдельно.Я бы порекомендовал SetTimer, но также полезно ознакомиться с двумя другими.

https://www.autohotkey.com/docs/commands/Loop.htm

https://www.autohotkey.com/docs/commands/Sleep.htm

https://www.autohotkey.com/docs/commands/SetTimer.htm

  • поместить приложение в фокус
  • свести его к минимуму (или сделать так, чтобы оно перефокусировало последнее использовавшееся приложение, если это возможно?)

В AutoHotkey много оконных команд.Эти два слова относятся к тому, что вы специально задали:

https://www.autohotkey.com/docs/commands/WinActivate.htm

https://www.autohotkey.com/docs/commands/WinMinimize.htm

В зависимости от того, зачем вам нужно сфокусироваться на окне, может быть другой способвыполнить то, что вам нужно.Если вам нужно что-то набирать в определенном окне каждые 12 минут, вы также можете использовать ControlSend без необходимости активировать его.

Вот пример для начала:

f1:: ; f1 will toggle your script to run
bT := !bT ; this is the toggle variable
If bT
{
    GoSub , lTimer ; triggers the timer sub to run immediately since SetTimer has to wait for period to expire on first run
    SetTimer , lTimer , 2500 ; this is in milliseconds, 12min = 720000ms
}
Else
    SetTimer , lTimer , Off
Return

lTimer: ; timer sub
If WinExist( "EEHotkeys" ) ; change EEHotkeys to be the name of your window in all places shown
{
    WinActivate , EEHotkeys
    WinWaitActive , EEHotkeys
    WinMinimize , EEHotkeys
}
Return

РЕДАКТИРОВАТЬ: Как предполагает samthecodingman в комментариях, вы можете альтернативно получить заголовок активного окна, активировать свое окно, а затем повторно активировать исходное окно.

lTimer: ; timer sub
If WinExist( "EEHotkeys" ) ; change EEHotkeys to be the name of your window in all places shown
{
    WinGetActiveTitle , sActiveWindow
    WinActivate , EEHotkeys
    WinWaitActive , EEHotkeys
    WinActivate , %sActiveWindow%
}
Return
...