2010年6月

;忙碌的上班生活,让我们分身乏术,每天下班都还得记得做一件小事关闭计算机。
;人毕竟不是机器,难免有时会因其他琐事而疏忽了正在待机的计算机,造成不环保,所以写了这个程序辅助大家关闭计算机,为节约资源做点贡献!
;“程序名.EXE /I”为注册本程序服务,以后可以随系统运行而运行,一劳永逸;“程序名.EXE /U”为移除本程序服务,你仍可以通过手工运行此程序来获得此服务。
;正常下班关机时间大约为17点,加班下班时间为21点。

#Include <Date.au3>
#NoTrayIcon

Global $afternoon="16:58",$night="20:58"

If $CmdLine[0] > 0 Then
 If StringUpper($CmdLine[1]) ="/I" Then
  If ProcessExists("AutoHalt.EXE") Then
     ProcessClose("AutoHalt.EXE")
  sleep(250)
  EndIf
  FileCopy(@ScriptFullPath,@WindowsDir&"\AutoHalt.EXE",1)
  sleep(250)
  RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "AutoHalt", "REG_SZ", @WindowsDir&"\AutoHalt.EXE")
  Run("AutoHalt.EXE",@WindowsDir)
  MsgBox( 0, "消息", "注册成功,计算机已经启用自动关机服务")
 EndIf
 If StringUpper($CmdLine[1]) ="/U" Then
  RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "AutoHalt")
  If ProcessExists("AutoHalt.EXE") Then
     ProcessClose("AutoHalt.EXE")
  sleep(250)
  EndIf
  MsgBox( 0, "消息", "自动关机服务已经成功移除")
 EndIf
 Exit 
EndIf

If WinExists("AutoHalt") Then Exit
AutoItWinSetTitle("AutoHalt")

If _NowTime(4) > $afternoon AND _NowTime(4) < $night Then
 $b = False
Else
 $b = True
EndIf

HotKeySet("^!u", "cancel")

While 1
   sleep(1000*60)
    If _NowTime(4)> $afternoon and _NowTime(4)< $night and $b Then
  $b = False
  halt()
 EndIf
 If _NowTime(4)> $night and not($b) Then
  $b = true
  halt()
 EndIf
WEnd

Func halt()
 $c = MsgBox( 4369, "下班时间到了!", "确定要立即关闭计算机吗?"&@CRLF&"默认将于1分钟后自动关闭计算机 ",60 )
 IF  $c = 1 Then

  IF MsgBox( 4369, "下班时间到了!", "请再次确定是否要立即关闭计算机?" ) = 1 Then
   Shutdown(13)
  EndIf
 EndIf
 IF  $c = -1 Then
  Shutdown(13)
 EndIf
EndFunc

Func cancel()
 If _NowTime(4)< $afternoon  Then
  If $b Then
   $b = False
   ToolTip("下班自动关机已经取消!", 0, 0,"",0,1)
   Sleep(1000)
  Else
   $b = True
   ToolTip("下班自动关机已经启用!", 0, 0,"",0,1)
   Sleep(1000)   
  EndIf
 EndIf
 ToolTip("", 0, 0,"",0,1)
EndFunc