查看完整版本: 定时关机提醒系统(源码)

似水年华 2007-11-9 08:01 PM

定时关机提醒系统(源码)

[code]
#include <GUIConstants.au3>
Opt("TrayAutoPause", 0)
Opt("TrayMenuMode", 1)
$g_szVersion = "定时关机提醒 for 小英"
If WinExists($g_szVersion) Then
        MsgBox(0, "提示", "程序已经运行,请勿重复打开", 5)
        Exit
EndIf
AutoItWinSetTitle($g_szVersion)
FileInstall("shutdown.exe", @TempDir & "\shutdown.exe", 1)
$show = TrayCreateItem("显示")
TrayItemSetState(-1, 128)
$exit = TrayCreateItem("退出")
TraySetToolTip("定时关机提醒系统 for 小英")
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("定时关机提醒 for 小英", 334, 200, 271, 281)
GUISetFont(11, 400, 0, "宋体")
GUISetBkColor(0x99CCFF)
$Label1 = GUICtrlCreateLabel("定时关机提醒 for 小英", 50, 16, 250, 24)
GUICtrlSetFont(-1, 15, 400, 0, "隶书")
GUICtrlSetColor(-1, 0xFF00FF)
$Label2 = GUICtrlCreateLabel("--by dxj", 220, 36, 80, 20)
$m1 = GUICtrlCreateRadio("", 35, 68)
$m2 = GUICtrlCreateRadio("", 35, 98)
$Label3 = GUICtrlCreateLabel("本次我想开机", 55, 68, 88, 18)
$Combo1 = GUICtrlCreateCombo("0", 147, 64, 40, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|10|11|12", "1")
$label12 = GUICtrlCreateLabel("小时", 188, 68)
$Input1 = GUICtrlCreateCombo("0", 225, 64, 37, 22)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59", "0")
$Label4 = GUICtrlCreateLabel("分钟", 265, 68, 32, 18)
$label11 = GUICtrlCreateLabel("设定关机时间", 55, 98)
$Combo3 = GUICtrlCreateCombo("0", 147, 94, 40, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23", "0")
$label12 = GUICtrlCreateLabel("时", 195, 98)
$Combo4 = GUICtrlCreateCombo("0", 225, 94, 37, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59", "0")
$label12 = GUICtrlCreateLabel("分", 270, 98)
$Checkbox1 = GUICtrlCreateCheckbox("", 48, 156, 17, 17)
$Checkbox2 = GUICtrlCreateCheckbox("", 184, 156, 17, 17)
$Label5 = GUICtrlCreateLabel("到时强制关机", 66, 160, 88, 18)
$Label6 = GUICtrlCreateLabel("开机自动启动", 200, 160, 88, 18)
$Label7 = GUICtrlCreateLabel("提前", 96, 130, 32, 18)
$Input2 = GUICtrlCreateInput("10", 136, 126, 33, 22)
$Label8 = GUICtrlCreateLabel("分钟提醒", 176, 130, 60, 18)
$delay_h = IniRead("定时关机.inf", "config", "hour", 1)
$delay_m = IniRead("定时关机.inf", "config", "min", 0)
$alarm = IniRead("定时关机.inf", "config", "alarm", 10) * 60000
$ms = IniRead("定时关机.inf", "config", "form", 1)
$h = IniRead("定时关机.inf", "config", "h", 0)
$m = IniRead("定时关机.inf", "config", "m", 0)
GUICtrlSetData($Combo1, $delay_h)
GUICtrlSetData($Input1, $delay_m)
GUICtrlSetData($Input2, $alarm / 60000)
GUICtrlSetData($Combo3, $h)
GUICtrlSetData($Combo4, $m)
$force = IniRead("定时关机.inf", "config", "force", 0)
If $force = 1 Then GUICtrlSetState($Checkbox1, $GUI_CHECKED)
If FileExists(@StartupDir & "\定时关机.lnk") Then GUICtrlSetState($Checkbox2, $GUI_CHECKED)
If $ms = 1 Then
        GUICtrlSetState($m1, $GUI_CHECKED)
        GUICtrlSetState($Combo3, $GUI_DISABLE)
        GUICtrlSetState($Combo4, $GUI_DISABLE)
Else
        GUICtrlSetState($m2, $GUI_CHECKED)
        GUICtrlSetState($Combo1, $GUI_DISABLE)
        GUICtrlSetState($Input1, $GUI_DISABLE)
EndIf
$begin = 0
$shuttime = 2424
$timeisup = 1
$alarmisup = 1
$last_h = 24
$last_m = 60
$min = 0
GUISetState(@SW_SHOW)
TraySetState()
#EndRegion ### END Koda GUI section ###
While 1
        $nMsg = GUIGetMsg()
        $msg = TrayGetMsg()
        If $msg = $exit Then
                If MsgBox(4 + 48 + 262144, "提示", "定时关机系统正在计时,是否确定退出?") = 6 Then Exit
        Else
                If $msg = $show Then
                        GUISetState(@SW_SHOW)
                        GUISetState(@SW_RESTORE)
                        TrayItemSetState($show, 128)
                EndIf
        EndIf
        
        If $timeisup = 0 Then
                $last_h = Number($shuttime_h) - Number(@HOUR)
                $last_m = Number($shuttime_m) - Number(@MIN)               
                If $last_m < 0 Then
                        $last_m = $last_m + 60
                        $last_h = $last_h - 1
                EndIf
                If $last_h < 0 Then $last_h = $last_h + 24
                If @MIN <> $min Then
                        TraySetToolTip("本次关机时间设定为" & $shuttime_h & "点" & Number($shuttime_m) & "分," & "现在离关机还有" & $last_h & "小时" & $last_m & "分钟")
                        $min = @MIN
                EndIf
                If $last_h = 0 And $last_m = 1 Then
                        $timeisup = 1
                        Run(@TempDir & "\Shutdown.exe /shutdown")
                        If $force = 0 Then
                                If MsgBox(4+48+262144, "关机提示", "系统即将关闭,是否延长关机时间?", 60) = 6 Then
                                        WinKill("定时关机系统 for 小英")
                                        GUICtrlSetData($Label3, "延长关机时间")
                                        TraySetToolTip("定时关机提醒系统 for 小英")
                                        WinSetOnTop($g_szVersion,"",1)
                                        GUISetState(@SW_SHOW)
                                        GUISetState(@SW_RESTORE)
                                        WinSetOnTop($g_szVersion,"",1)
                                Else
                                        Exit
                                EndIf
                        Else
                                Exit
                        EndIf
                EndIf
                If $alarm > 1 And $last_h = 0 And $last_m = $alarm And $alarmisup = 0 Then
                        MsgBox(48+262144, "提示", "离关机时间还有" & $alarm & "分钟,请提前做好存档准备!", 10)
                        $alarmisup = 1
                EndIf
        EndIf
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        IniWrite("定时关机.inf", "config", "hour", $delay_h)
                        IniWrite("定时关机.inf", "config", "min", GUICtrlRead($Input1))
                        IniWrite("定时关机.inf", "config", "alarm", GUICtrlRead($Input2))
                        IniWrite("定时关机.inf", "config", "h", GUICtrlRead($Combo3))
                        IniWrite("定时关机.inf", "config", "m", GUICtrlRead($Combo4))
                        If MsgBox(4 + 48 + 262144, "提示", "程序正在运行,是否确定退出?") = 6 Then Exit
                Case $GUI_EVENT_MINIMIZE
                        TrayItemSetState($show, 64)
                        IniWrite("定时关机.inf", "config", "hour", $delay_h)
                        IniWrite("定时关机.inf", "config", "min", GUICtrlRead($Input1))
                        IniWrite("定时关机.inf", "config", "alarm", GUICtrlRead($Input2))
                        IniWrite("定时关机.inf", "config", "h", GUICtrlRead($Combo3))
                        IniWrite("定时关机.inf", "config", "m", GUICtrlRead($Combo4))
                        If GUICtrlRead($m1) = 1 Then
                                $delay_m = GUICtrlRead($Input1)
                                $force = IniRead("定时关机.inf", "config", "force", 0)
                                $delay_h = GUICtrlRead($Combo1)
                                $shuttime_h = Number(@HOUR) + Number($delay_h)
                                $shuttime_m = Number(@MIN) + Number($delay_m)
                                
                                If $shuttime_m >= 60 Then
                                        $shuttime_m = $shuttime_m - 60
                                        $shuttime_h = $shuttime_h + 1
                                EndIf
                                If $shuttime_h < 24 Then
                                Else
                                        $shuttime_h = $shuttime_h - 24
                                EndIf
                        Else
                                $shuttime_h = GUICtrlRead($Combo3)
                                $shuttime_m = GUICtrlRead($Combo4)
                                $delay_h = Number($shuttime_h) - Number(@HOUR)
                                $delay_m = Number($shuttime_m) - Number(@MIN)
                                If $delay_m < 0 Then
                                        $delay_m = $delay_m + 60
                                        $delay_h = $delay_h - 1
                                EndIf
                                If $delay_h < 0 Then
                                        $delay_h = $delay_h + 24
                                EndIf
                        EndIf
                        $delay = $delay_h * 60 + $delay_m
                        $alarm = GUICtrlRead($Input2)
                        If $delay <= $alarm Then
                                MsgBox(0, "提示", "你输入的提醒时间大于或等于开机持续总时间!", 10)
                                GUISetState(@SW_RESTORE)
                        Else
                                GUISetState(@SW_HIDE)
                                TrayTip("提示", "定时关机系统现在开始计时,关机时间为" & $shuttime_h & "点" & $shuttime_m & "分", 1, 1)
                                Sleep(2000)
                                TrayTip("提示", "", 1, 1)
                                If $shuttime_m < 10 Then $shuttime_m = "0" & $shuttime_m
                                $shuttime = $shuttime_h & $shuttime_m
                                $timeisup = 0
                                $alarmisup = 0
                                $begin = 1
                                $min = 0
                        EndIf
                Case $Label3
                        ControlClick("定时关机提醒 for 小英", "", $m1)
                Case $label11
                        ControlClick("定时关机提醒 for 小英", "", $m2)
                Case $Label5
                        ControlClick("定时关机提醒 for 小英", "", $Checkbox1)
                Case $Label6
                        ControlClick("定时关机提醒 for 小英", "", $Checkbox2)
                Case $Checkbox1
                        If GUICtrlRead($Checkbox1) = 1 Then
                                IniWrite("定时关机.inf", "config", "force", 1)
                        Else
                                IniWrite("定时关机.inf", "config", "force", 0)
                        EndIf
                Case $Combo3
                        IniWrite("定时关机.inf", "config", "h", GUICtrlRead($Combo3))
                Case $Combo4
                        IniWrite("定时关机.inf", "config", "m", GUICtrlRead($Combo4))
                        
                Case $Checkbox2
                        If GUICtrlRead($Checkbox2) = 1 Then
                                FileCreateShortcut(@ScriptDir & "\" & @ScriptName, @StartupDir & "\定时关机.lnk", @ScriptDir)
                        Else
                                FileDelete(@StartupDir & "\定时关机.lnk")
                        EndIf
                Case $Combo1
                        $delay_h = 0
                        $delay_h = GUICtrlRead($Combo1)
                        IniWrite("定时关机.inf", "config", "hour", $delay_h)
                Case $Input1
                        IniWrite("定时关机.inf", "config", "min", GUICtrlRead($Input1))
                Case $Input2
                        IniWrite("定时关机.inf", "config", "alarm", GUICtrlRead($Input2))
                Case $m1
                        GUICtrlSetState($Combo3, $GUI_DISABLE)
                        GUICtrlSetState($Combo4, $GUI_DISABLE)
                        GUICtrlSetState($Combo1, $GUI_ENABLE)
                        GUICtrlSetState($Input1, $GUI_ENABLE)
                        IniWrite("定时关机.inf", "config", "form", 1)
                Case $m2
                        GUICtrlSetState($Combo1, $GUI_DISABLE)
                        GUICtrlSetState($Input1, $GUI_DISABLE)
                        GUICtrlSetState($Combo3, $GUI_ENABLE)
                        GUICtrlSetState($Combo4, $GUI_ENABLE)
                        IniWrite("定时关机.inf", "config", "form", 2)
        EndSwitch
WEnd               

[/code]

smilesail 2008-1-2 05:19 PM

好复杂啊                  定时关机    yct03 yct03

cqqvczp 2008-4-30 07:55 PM

好复杂!!yct04

cafews 2008-7-17 09:58 PM

有点眼花..............yct03
页: [1]
查看完整版本: 定时关机提醒系统(源码)
Google