Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Как в функцию вписать? (http://forum.oszone.net/showthread.php?t=173873)

JaguarSP 23-04-2010 12:08 1399158

Как в функцию вписать?
 
что нужно сделать чтобы в функции проверялось нажата ли кнопка свертывания в трее, уже все передумал =( вот 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


Creat0R 23-04-2010 14:02 1399225

Цитата:

Цитата JaguarSP
уже все передумал »

Тема решена?

JaguarSP 23-04-2010 14:34 1399241

эм =) ну это же я все передумал =) а есть еще умные люди ;-) передумал в том плане что не могу найти решение...

Creat0R 23-04-2010 14:41 1399243

Цитата:

Цитата JaguarSP
это же я все передумал »

Мне показалось что там написано «придумал» :sorry:

А что если при свёртываний присвоить также переменной $iStop = True?

JaguarSP 23-04-2010 15:10 1399262

Цитата:

Цитата Creat0R
А что если при свёртываний присвоить также переменной $iStop = True? »

хм не понял... покажи примером пожалуйста :-)

Creat0R 23-04-2010 15:16 1399267

Цитата:

Цитата 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 ;) иначе в следующий раз не сработает.

JaguarSP 23-04-2010 15:34 1399280

Цитата:

Цитата 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)

если не сделать так то другие месаджи пойдут...

Creat0R 24-04-2010 00:06 1399571

Цитата:

Цитата JaguarSP
так задуманно »

Ну тогда оно вообще не нужно, т.к переменной $iStop присваивается значение 1 (True) при нажатии на кнопку, ну или вообще вместо ExitLoop сразу поставить Exit, т.к всё ровно по завершению функции происходит выход (при условий что она остановлена конечно).

JaguarSP 24-04-2010 01:17 1399611

ну по идеи то да... я когда все написал там было не оч и переделал чтобы было хорошо =)

Creat0R 24-04-2010 01:29 1399615

JaguarSP, ну а теперь то тема решена?

JaguarSP 24-04-2010 01:44 1399619

можно сказать да =) просто забил =( там получается надо добавить в основные кнопки, свертывание и в _func2() а как ето все осуществить %)


Время: 23:12.

Время: 23:12.
© OSzone.net 2001-