Цитата:
Цитата crashtuak
мне нужно, чтоб сокрытие окон работало в отдельном потоке, а основной скрипт (запуск программы, нажатие кнопок) выполнялся независимо. »
|
Либо в дополнительном скрипте, либо через callback:
Код:
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Timers.au3>
;
Opt("WinWaitDelay", 0)
Global $sTitle = "Search Title"
Global $hGUI = GUICreate($sTitle)
Global $iTimer = TimerInit()
_Timer_SetTimer($hGUI, 10, "_CheckWindow_Proc")
While 1
If TimerDiff($iTimer) >= 2000 Then ;Тут мы имитируем появление тайного окна (ради теста)
ConsoleWrite("Окно появилось" & @CRLF)
GUISetState(@SW_SHOW)
Sleep(2000) ;Спим 2 сек. чтобы убедиться что наш процесс проверки обнаружил окно и скрыл его
_Timer_KillAllTimers($hGUI)
Exit
EndIf
Sleep(10)
WEnd
Func _CheckWindow_Proc($hWnd, $Msg, $iIDTimer, $dwTime)
If BitAND(WinGetState($sTitle), 2) Then
ConsoleWrite("Скрываем окно" & @CRLF)
WinSetState($sTitle, "", @SW_HIDE)
EndIf
EndFunc
“Чистый” пример использования:
Код:
#include <Timers.au3>
;
Opt("WinWaitDelay", 0)
Global $sSearchTitle = "Search Title"
_Timer_SetTimer(0, 10, "_CheckWindow_Proc")
While 1
;Тут мы выполняем рутинные операции
Sleep(10)
WEnd
Func _CheckWindow_Proc($hWnd, $Msg, $iIDTimer, $dwTime)
If BitAND(WinGetState($sSearchTitle), 2) Then WinSetState($sSearchTitle, "", @SW_HIDE)
EndFunc
|