после еще одного дня дротсва над скриптом вышли еще проблемы =(
Код:
#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, как сделать чтобы она останавливала скрипт в любой момент(в частности когда идет таймер) и спрашивала да или нет и если нет то скрипт идет дальше...
|