После длительного нахождения программы в свернутом виде (сворачивается в трей) периодически возникают ситуации когда программа не восстанавливается из трея и ее приходится завершать как процесс.
Кусок кода который отвечает за сворачивание/восстановление окна.
Когда окно не хочет восстанавливаться запись в log.txt идет, т.е. программа отлавливает событие, но почему-то не срабатывает WinSetState.
Кусок кода который отвечает за сворачивание/восстановление окна.
Код:
GUISetOnEvent($GUI_EVENT_MINIMIZE, 'TrayPrimDown')
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, 'TrayPrimDown')
Func TrayPrimDown()
$State=WinGetState($Form1)
If $State=23 Or $State=15 Or $State=7 Then
FileWrite(@ScriptDir&'\log.txt', WinGetState($Form1)&' HideToTray'&@CRLF)
WinSetState($Form1, '', @SW_HIDE)
Else
FileWrite(@ScriptDir&'\log.txt', WinGetState($Form1)&' RestoreFromTray'&@CRLF)
WinSetState($Form1, '', @SW_SHOW)
WinSetState($Form1, '', @SW_RESTORE)
WinSetOnTop($Form1, '', 1)
WinSetOnTop($Form1, '', 0)
EndIf
EndFunc
Когда окно не хочет восстанавливаться запись в log.txt идет, т.е. программа отлавливает событие, но почему-то не срабатывает WinSetState.