-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Как в функцию вписать?
что нужно сделать чтобы в функции проверялось нажата ли кнопка свертывания в трее, уже все передумал =( вот func:
Код:
Func _Timer()
$iOld_Opt = Opt("GUIOnEventMode", 1)
GUICtrlSetOnEvent($cancel, "_Main_Events")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Main_Events")
For $Start = $pas To 0 Step -1
Select
Case $Start >= 7
GUICtrlSetColor($Label1, 0x00FF00)
GUICtrlSetData($Label1, $Start)
Case $Start > 3
GUICtrlSetColor($Label1, 0xFF8000)
GUICtrlSetData($Label1, $Start)
Case $Start >= 0
GUICtrlSetColor($Label1, 0xFF0000)
GUICtrlSetData($Label1, $Start)
EndSelect
If $iStop Then
MsgBox(64, 'Atention', 'Таймер остановлен! Выход из программы.')
$iStop = 1
ExitLoop
EndIf
Sleep(1000)
Next
Return
EndFunc
И вот скрипт сварачивания в трее:
Код:
#NoTrayIcon
#include <GUIConstantsEx.au3>
;
Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)
$hGUI = GUICreate("Пример в трей", 300, 200)
$RestoreItem = TrayCreateItem("Восстановить.")
TrayItemSetOnEvent(-1, "_RestoreFromTray_Proc")
TraySetOnEvent(-13, "_RestoreFromTray_Proc")
TraySetClick(1)
GUISetState()
While 1
Switch GUIGetMsg()
Case -3
ExitLoop
Case -4
GUISetState(@SW_HIDE)
TraySetState(1)
EndSwitch
WEnd
Func _RestoreFromTray_Proc()
If BitAND(WinGetState($hGUI), 2) = 2 Then Return
TraySetState(2)
GUISetState(@SW_SHOW)
GUISetState(@SW_RESTORE)
EndFunc
|
эм =) ну это же я все передумал =) а есть еще умные люди ;-) передумал в том плане что не могу найти решение...
|
Мне показалось что там написано «придумал» :sorry:
А что если при свёртываний присвоить также переменной $iStop = True?
|
Цитата:
Цитата Creat0R
А что если при свёртываний присвоить также переменной $iStop = True? »
|
хм не понял... покажи примером пожалуйста :-)
|
Цитата:
Цитата JaguarSP
покажи примером пожалуйста »
|
Код:
Func _RestoreFromTray_Proc()
$iStop = 1
If BitAND(WinGetState($hGUI), 2) = 2 Then Return
TraySetState(2)
GUISetState(@SW_SHOW)
GUISetState(@SW_RESTORE)
EndFunc
и у тебя ошибка в функции таймера, там после MsgBox нужно ставить $iStop = 0 а не 1 ;) иначе в следующий раз не сработает.
|
Цитата:
Цитата Creat0R
ставить $iStop = 0 а не 1 »
|
неее так задуманно =) это вот для этого:
Код:
Case $Shutdown
_Timer()
If $istop=1 Then Exit
$msg=MsgBox(262145,"Atention", "Ваш компъютер будет через 20 секунд", 15)
If $msg=1 Then
;Sleep(20000)
Shutdown(1)
если не сделать так то другие месаджи пойдут...
|
Ну тогда оно вообще не нужно, т.к переменной $iStop присваивается значение 1 (True) при нажатии на кнопку, ну или вообще вместо ExitLoop сразу поставить Exit, т.к всё ровно по завершению функции происходит выход (при условий что она остановлена конечно).
|
ну по идеи то да... я когда все написал там было не оч и переделал чтобы было хорошо =)
|
JaguarSP, ну а теперь то тема решена? 
|
можно сказать да =) просто забил =( там получается надо добавить в основные кнопки, свертывание и в _func2() а как ето все осуществить %)
|
Время: 23:12.
© OSzone.net 2001-