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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Проблема с кнопкой. И еще надо чтобы $form закрылся но скрипт бы выполнялся дальше (http://forum.oszone.net/showthread.php?t=173592)

JaguarSP 20-04-2010 01:59 1396594

Проблема с кнопкой. И еще надо чтобы $form закрылся но скрипт бы выполнялся дальше
 
Вот весь скрипт...
Код:

;#NoTrayIcon
#include <GUIConstants.au3>
$paz=InputBox("JaguarSP Timer for OFF", "Введите время в миннутах ;-)")


$Form = GUICreate("JaguarSP Timer for OFF", 304, 233, 511, 253)
$Restart = GUICtrlCreateButton("Restart", 8, 200, 137, 25, 0)
GUICtrlSetCursor (-1, 0)
$Logoff = GUICtrlCreateButton("Logoff", 156, 200, 137, 25, 0)
GUICtrlSetCursor (-1, 0)
$Shutdown = GUICtrlCreateButton("Shutdown", 8, 173, 284, 25, 0)
GUICtrlSetCursor (-1, 0)
$Label1 = GUICtrlCreateLabel("Выберите что произойдет через это время", 48, 24, 263, 17)
$Label2 = GUICtrlCreateLabel("Shutdown-Выключение компъютера", 24, 48, 186, 17)
$Label3 = GUICtrlCreateLabel("Restart- Перезагрузка компъютера", 24, 72, 183, 17)
$Label4 = GUICtrlCreateLabel("Logoff- Завершить работу текущей учетной записи ", 24, 96, 263, 17)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Select
Case $nMsg=$Restart
            $vot=2
       
               
Case $nMsg = $GUI_EVENT_CLOSE
Exit

EndSelect
WEnd
$par=$paz * 60000-20000
$begin = TimerInit()
sleep($par)
$dif = TimerDiff($begin)
$msg=MsgBox(262145,"Atention", "Ваш компъютер будет через 20 секунд", 15)
If $msg=1  Then
    Sleep(20000)
        Shutdown($vot)
EndIf
If $msg=2 Then MsgBox(262144,"Atention", "Вы отменили запуск ядерных ракет на USA мир спасен =))") 
If        $msg=-1 then Shutdown($vot)

надо что-то написать после этого:

Case $nMsg=$Restart
$vot=2

Чтобы $form закрылся но скрипт бы выполнялся дальше.... а что нуна вставить не могу понять=((( (видимо в силу не опытности)

Creat0R 20-04-2010 02:27 1396605

Предупреждение за нарушение правил форума, пункт 2.7:

Цитата:

В заголовке темы обязательно обозначайте название предмета, которого касается вопрос, а в теле сообщения максимально подробно опишите проблему (приведите аппаратную/программную конфигурацию, а также изложите ситуацию, в которой возникает проблема).
Переименуйте пожалуйста тему.




Цитата:

Цитата JaguarSP
Вот весь скрипт... »

Который нужно заключать в теги кода.

madmasles 20-04-2010 09:35 1396677

JaguarSP,
Попробуйте так:
Код:

#NoTrayIcon
;#RequireAdmin
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$paz = InputBox("JaguarSP Timer for OFF", "Введите время в секундах ;-)", "", " M2")
If $paz = "" Or StringIsDigit($paz) <> 1 Then Exit
$Form1 = GUICreate("", 400, 498, -1, -1, $WS_BORDER, BitOR($WS_EX_TOOLWINDOW, $GUI_WS_EX_PARENTDRAG, $WS_EX_CLIENTEDGE, $WS_EX_STATICEDGE))
$Label1 = GUICtrlCreateLabel($paz, 16, 40, 262, 205, $SS_CENTER)
GUICtrlSetFont(-1, 130, 400, 0, "Comic Sans MS")
GUICtrlSetColor(-1, 0xFF0000)
$Label3 = GUICtrlCreateLabel("Сек.", 280, 185, 109, 62)
GUICtrlSetFont(-1, 36, 800, 0, "Comic Sans MS")
$Restart = GUICtrlCreateButton("Restart", 8, 450, 137, 25, 0)
GUICtrlSetCursor(-1, 0)
$Logoff = GUICtrlCreateButton("Logoff", 156, 450, 137, 25, 0)
GUICtrlSetCursor(-1, 0)
$Shutdown = GUICtrlCreateButton("Shutdown", 8, 423, 284, 25, 0)
GUICtrlSetCursor(-1, 0)
$Label4 = GUICtrlCreateLabel("Выберите что произойдет через это время", 48, 324, 263, 17)
$Label5 = GUICtrlCreateLabel("Shutdown-Выключение компъютера", 24, 348, 386, 17)
$Label6 = GUICtrlCreateLabel("Restart- Перезагрузка компъютера", 24, 372, 383, 17)
$Label7 = GUICtrlCreateLabel("Logoff- Завершить работу текущей учетной записи ", 24, 396, 263, 17)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $Restart
            _Timer()
            ;Shutdown(2)
            MsgBox(0, "", "Перезагрузка")
            Exit
        Case $Logoff
            _Timer()
            ;Shutdown(0)
            MsgBox(0, "", "Выход из учетной записи")
            Exit
        Case $Shutdown
            _Timer()
            ;Shutdown(1)
            MsgBox(0, "", "Выключение")
            Exit
    EndSwitch
WEnd
Func _Timer()
    For $Start = $paz 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
        Sleep(1000)
    Next
    Return
EndFunc  ;==>_Timer


JaguarSP 20-04-2010 09:57 1396692

хм вроде гуд=) теперь буду разбираться как работает этот гуд=) спасибо=)

JaguarSP 20-04-2010 20:24 1397173

после еще одного дня дротсва над скриптом вышли еще проблемы =(
Код:

#NoTrayIcon
#RequireAdmin
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <Constants.au3>

$par = InputBox("JaguarSP Timer for OFF", "Введите время в минутах ;-)", "", " M2")
$paz=$par*60
If $paz = "" Or StringIsDigit($paz) <> 1 Then Exit       
        Opt("TrayMenuMode", 1)
    Opt("TrayOnEventMode", 1)
$Form1 = GUICreate("Shootdown", 400, 498, -1, -1 ); $WS_BORDER, BitOR($WS_EX_TOOLWINDOW, $GUI_WS_EX_PARENTDRAG, $WS_EX_CLIENTEDGE, $WS_EX_STATICEDGE)); $hGUI



$pic=GUICtrlCreatePic ( @ScriptDir & '\shootdown.bmp', 0, 0 ,400 ,498 )
GUICtrlSetState($Pic, $GUI_DISABLE)
$Label1 = GUICtrlCreateLabel($paz, 16, 150, 262, 120, $SS_CENTER)
GUICtrlSetFont(-1, 72, 400, 0, "Comic Sans MS")
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Label3 = GUICtrlCreateLabel("Сек.", 280, 185, 109, 62)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetFont(-1, 36, 800, 0, "Comic Sans MS")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$cancel = GUICtrlCreateButton("Cancel", 295, 422, 100, 53, 0)
GUICtrlSetCursor(-1, 0)
$Restart = GUICtrlCreateButton("Restart", 8, 450, 137, 25, 0)
GUICtrlSetCursor(-1, 0)
$Logoff = GUICtrlCreateButton("Logoff", 156, 450, 137, 25, 0)
GUICtrlSetCursor(-1, 0)
$Shutdown = GUICtrlCreateButton("Shutdown", 8, 423, 284, 25, 0)
GUICtrlSetCursor(-1, 0)
$Label4 = GUICtrlCreateLabel("Выберите необходимое дейстыие", 48, 324, 263, 17)
          GUICtrlSetColor(-1, 0xFF0000)
                  GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
                  GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) 
$Label5 = GUICtrlCreateLabel("Shutdown-Выключение компъютера", 24, 348, 386, 17)
                  GUICtrlSetColor(-1, 0xFF0000)
                  GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
          GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Label6 = GUICtrlCreateLabel("Restart- Перезагрузка компъютера", 24, 372, 383, 17)
          GUICtrlSetColor(-1, 0xFF0000)
                  GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
                  GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Label7 = GUICtrlCreateLabel("Logoff- Завершить работу текущей учетной записи ", 24, 396, 263, 17)
                  GUICtrlSetColor(-1, 0xFF0000)
                  GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
          GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState(@SW_SHOW)

$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

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $Restart
            _Timer()
                          $msg=MsgBox(262145,"Atention", "Ваш компъютер будет через 20 секунд", 15)
                        If $msg=1  Then
                            Sleep(20000)
                                                        MsgBox(0, "", "Перезагрузка")
                                                EndIf
                                                        If $msg=2 Then MsgBox(262144,"Atention", "Вы отменили запуск ядерных ракет на USA мир спасен =))") 
                                                        If        $msg=-1 Then MsgBox(0, "", "Перезагрузка2")
            ;Shutdown(2)
            ;MsgBox(0, "", "Перезагрузка")
            Exit
        Case $Logoff
            _Timer()
                        $msg=MsgBox(262145,"Atention", "Ваш компъютер будет через 20 секунд", 15)
                        If $msg=1  Then
                            Sleep(20000)
                                                        MsgBox(0, "", "Выход из учетной записи")
                                                EndIf
                                                        If $msg=2 Then MsgBox(262144,"Atention", "Вы отменили запуск ядерных ракет на USA мир спасен =))") 
                                                        If        $msg=-1 Then MsgBox(0, "", "Выход из учетной записи2")
            ;Shutdown(0)
            ;MsgBox(0, "", "Выход из учетной записи")
            Exit
        Case $Shutdown
            _Timer()
                        $msg=MsgBox(262145,"Atention", "Ваш компъютер будет через 20 секунд", 15)
                        If $msg=1  Then
                            Sleep(20000)
                                                        MsgBox(0, "", "Выключение")
                                                EndIf
                                                        If $msg=2 Then MsgBox(262144,"Atention", "Вы отменили запуск ядерных ракет на USA мир спасен =))") 
                                                        If        $msg=-1 Then MsgBox(0, "", "Выключение2")
            ;Shutdown(1)
            ;MsgBox(0, "", "Выключение")
                        Exit
                        Case $cancel
                          $msg2=MsgBox(262148,"Atention", "Вы уверенны?")
                        If $msg2=6 Then Exit
                               
                EndSwitch
        WEnd
       
Func _Timer()
    For $Start = $paz 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
        Sleep(1000)
    Next
    Return
EndFunc  ;==>_Timer

Func _RestoreFromTray_Proc()
    If BitAND(WinGetState($Form1), 2) = 2 Then Return
    TraySetState(2)
    GUISetState(@SW_SHOW)
    GUISetState(@SW_RESTORE)
EndFunc

проблема в том что кнопки работают как то не корректно чтоли... например если нажимаю свернуть в трее то после разварачивания обратно, не какие кнопки не работают(кроме свернуть и то сварачивается не в трее а просто, если на что нить нажимал....). И насчет кнопки cancel, как сделать чтобы она останавливала скрипт в любой момент(в частности когда идет таймер) и спрашивала да или нет и если нет то скрипт идет дальше...


Время: 16:38.

Время: 16:38.
© OSzone.net 2001-