Мой код выполняет следующие действия:Скрыть GUI, когда целевое окно не активно или свернуто
Когда окно google.com становится активным, он покажет вам простой графический интерфейс.
Затем, если вы перейдете на другую вкладку, GUI будет скрыт. [1]
[1]. Обратите внимание, что он работает также и для вкладок, открытых в другом окне браузера. Например, вы можете открыть 2 окна браузера - первое окно с google.com
и apple.com
, а второе окно - amazon.com
. Вы можете щелкнуть вкладку apple.com
, а также вкладку amazon.com
, и в обоих случаях GUI будет скрыт. Затем, если вы нажмете вкладку google.com
, графический интерфейс снова появится.
Проблема заключается в том, что я не могу понять, как заставить GUI быть скрытым, когда окно (содержащее вкладку google.com
) сведено к минимуму. (И также, я не могу избавиться от чувства, что есть другие ошибки, которые не видны во время тестирования, но на самом деле существуют).
Суммируя все это, что я хочу это:
Как только окно без Google или вкладки нажата/включена (за исключением AHK Gui) Графический интерфейс пользователя должен быть скрыт, и как только как любой щелчок/вкладка google-окна/вкладки активируется, Gui должен быть показан.
Вот мой код:
#Persistent
SetTimer, Show_Gui, 300
Return
Show_Gui:
IfWinNotActive, foo
IfWinNotActive, Google
{
Gui, Destroy
Return
}
; Otherwise:
SetTimer, Show_Gui, Off
Gui, Add, Button, w200 h25 gTest1, button 1
Gui, Add, Button, w200 h25 gTest2, button 2
Gui, Show,, foo
WinWaitNotActive, foo
WinWaitNotActive, Google
SetTimer, Show_Gui, On
Return
Test1:
; do something
Return
Test2:
; do something
Return
Edit. Вот код, который обсуждался в комментариях к сообщению Forivin. Это не часть актуального вопроса.
#Persistent
Gui, Add, Button, w200 h25 gTest1, button 1
Gui, Add, Button, w200 h25 gTest2, button 2
GroupAdd, myGroup, Google
GroupAdd, myGroup, foo
WinWaitActive, Google
Gui, Show,, foo
SetTimer, Gui_Visibility_Handler, 300
Return
Gui_Visibility_Handler:
WinGet, googleWinState, MinMax, Google
If (googleWinState = -1 || !WinExist("Google")) ;if window minimized or not existent
{
Gui, Hide
If (googleWinState = -1) ;workaround for a bug where windows thinks
Send, !{Esc} ;that the minimized window is active
WinWaitActive, Google
Gui, Show
Return
}
IfWinActive, Google
{
Gui, Show
Return
}
IfWinNotActive, ahk_group MyGroup
{
Gui, Hide
Return
}
Return
Test1:
;do something
Return
Test2:
;do something
Return
Спасибо, он работает хорошо, за исключением того, что он не скрывает GUI, когда я нажимаю вкладку в другом окне браузера. Я создал изображение с 4 скриншотами, чтобы объяснить: http: // imgur.com/vfPSbqL –
Хорошо, позвольте мне попытаться суммировать то, что я понимаю: как только клик или вкладка без google или вкладка (за исключением AHK Gui) вы хотите, чтобы Gui был скрыт, и как только любое окно google/tab нажата/активирована, вы хотите показать Gui. Это верно? – Forivin
Да, это именно то, что я хочу. –