找回密码
注册 登录
查看: 1268|回复: 0

自动关机助手源码 订制属于自己的关机助手 AU3源码

[复制链接]
  • TA的每日心情

    2017-12-6 09:14
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2017-11-23 14:29:47 | 显示全部楼层 |阅读模式
    偶然在网站看见一段关机源码分享给大家、Au3脚本,也就是AutoIt3 Windows自动安装脚本语言。AutoIt 是一种自动控制工具。这在PC首次展示时非常有用,那时成百上千的机器需要被自动的安装。尽管有一些程序如 MS Office, Mcafee, IE4 等具有自动安装的组件,可还有太多的程序不具备自动安装的功能。那就是用到 AutoIt 的地方。AutoIt 也可以被用来在你的机器上完成简单的任务。AutoIt 运行时读取一个指定的脚本文件。这个脚本文件使得 AutoIt 完成一系列操作,包括
    执行程序(Windows 应用程序,DOS命令,等等。)
    发出按键和鼠标点击(所有字符,不受键盘布局约束)。
    窗口操作(例如最小化,隐藏,恢复,等待,激活(同样适用 Win98/Win2000))。
    简单剪贴板文本操作。
    最值一提的是它很小(本身包含EXE件,没有DLL文件,没有注册表项)而且免费! (并且将保持免费)

    1.png
    1. #Region ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
    2. #AccAu3Wrapper_Icon=111.ico ;ICO文件自己准备
    3. #AccAu3Wrapper_OutFile=自动关机助手.exe
    4. #AccAu3Wrapper_UseX64=n
    5. #AccAu3Wrapper_Res_Comment=http://blog.163.com/os_home
    6. #AccAu3Wrapper_Res_Description=http://blog.163.com/os_home
    7. #AccAu3Wrapper_Res_Fileversion=1.0.0.1
    8. #AccAu3Wrapper_Res_LegalCopyright=http://blog.163.com/os_home
    9. #AccAu3Wrapper_Res_Language=2052
    10. #AccAu3Wrapper_Res_requestedExecutionLevel=None
    11. #EndRegion ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
    12. #Region ;**** 参数创建于 ACNWrapper_GUI ****
    13. #EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
    14. #include <GUIConstantsEx.au3>
    15. #include <StaticConstants.au3>
    16. #include <WindowsConstants.au3>
    17. #include <ButtonConstants.au3>
    18. #include <ComboConstants.au3>
    19. #include <GUIConstants.au3>
    20. #include <DateTimeConstants.au3>
    21. #Include <Constants.au3>
    22. $Exists = "关机助手";判断是否只运行一个程序
    23. If WinExists($Exists) Then
    24.         MsgBox(32,"温馨提醒您:","程序已经运行!")
    25.         Exit
    26. EndIf
    27.         
    28. ;AutoItWinSetTitle($Exists);修改程序窗口的标题名
    29. FileCreateShortcut(@AutoItExe,@DesktopCommonDir&"\定时工具");自动在桌面创建快捷方式!
    30. $Combo1 = GUICtrlCreateCombo("", 120, 95, 80, 25);组合列表
    31. $R1 = ""
    32. $T1 = ""
    33. $T2 = ""
    34. $T3 = ""
    35. $T4 = ""
    36. $S1 = ""
    37. $W1="0"
    38. $W2="0"
    39. $W3="0"
    40. $W4="0"
    41. $W5="0"
    42. $W6="0"
    43. $W7="0"

    44. $Form0= GUICreate("关机助手", 420, 380, 500, 300);前面二个是大小,后面二个是坐标
    45. $Group1 = GUICtrlCreateGroup("关机时间设定(默认为每天)", 20, 110, 380, 95);前面二个是框坐标,后面是大小
    46. GUICtrlSetColor(-1,0x666666)
    47. $Checkbox1 = GUICtrlCreateCheckbox("星期一", 40, 130, 65, 25);前面二个是坐标,后面是自己占用大小
    48. $Checkbox2 = GUICtrlCreateCheckbox("星期二", 110, 130, 65, 25)
    49. $Checkbox3 = GUICtrlCreateCheckbox("星期三", 180, 130, 65, 25)
    50. $Checkbox4 = GUICtrlCreateCheckbox("星期四", 250, 130, 65, 25)
    51. $Checkbox5 = GUICtrlCreateCheckbox("星期五", 320, 130, 65, 25)
    52. $Checkbox6 = GUICtrlCreateCheckbox("星期六", 40, 170, 65, 25)
    53. $Checkbox7 = GUICtrlCreateCheckbox("星期日", 110, 170, 65, 25)
    54. $Checkbox8 = GUICtrlCreateCheckbox("每日", 180, 170, 50, 25)
    55. $Label1 = GUICtrlCreateLabel("时间设定:", 240, 175, 65, 25)
    56. GUICtrlSetState($Checkbox8, $GUI_CHECKED)
    57. $Date1 = GUICtrlCreateDate("", 290, 170, 80, 20, BitOR($DTS_UPDOWN,$DTS_TIMEFORMAT,$WS_TABSTOP));时间选择控件
    58. GUICtrlCreateGroup("", -99, -99, 1, 1)
    59. $Group2 = GUICtrlCreateGroup("关机操作(默认强制重启)", 20, 210, 380, 50)
    60. GUICtrlSetColor(-1,0x666666)
    61. $Radio1 = GUICtrlCreateRadio("重启", 60, 230, 65, 25)
    62. $Radio2 = GUICtrlCreateRadio("关机", 140, 230, 65, 25)
    63. $Radio3 = GUICtrlCreateRadio("强制重启", 210, 230, 65, 25)
    64. $Radio4 = GUICtrlCreateRadio("强制关机", 285, 230, 65, 25)
    65. GUICtrlSetState($Radio3, $GUI_CHECKED)
    66. GUICtrlCreateGroup("", -99, -99, 1, 1)
    67. $Group3 = GUICtrlCreateGroup("", 20, 13, 380, 90)
    68. $Label2 = GUICtrlCreateLabel("关机小程序", 140, 0, 120, 17)
    69. GUICtrlSetColor(-1,0xbb0033);美化字体颜色
    70. $Label3 = GUICtrlCreateLabel("", 290, 0, 108, 18)
    71. GUICtrlSetColor(-1,0x440011)
    72. $Label4 = GUICtrlCreateLabel("每周:", 30, 30, 360, 30)

    73. $Label5 = GUICtrlCreateLabel("每天:", 30, 50, 100, 20)

    74. $Label6 = GUICtrlCreateLabel("执行:", 30, 70, 80, 20)

    75. GUICtrlCreateGroup("", -99, -99, 1, 1)
    76. $Button1 = GUICtrlCreateButton("应用设置", 120, 270, 65, 25)
    77. GUICtrlSetColor(-1,0x110033)
    78. $Button2 = GUICtrlCreateButton("重置设置", 250, 270, 65, 25)
    79. GUICtrlSetColor(-1,0x110033)
    80. GUICtrlCreateGroup("", -99, -99, 1, 1)
    81. $Group4 = GUICtrlCreateGroup("", 20, 295, 380, 75)
    82. $Button3 = GUICtrlCreateButton("随系统启动", 27, 310, 75, 25)
    83. $Button4 = GUICtrlCreateButton("去除自启", 102, 310, 75, 25)
    84. $Button5 = GUICtrlCreateButton("重启主机", 177, 310, 75, 25)
    85. $Button6 = GUICtrlCreateButton("关闭主机", 252, 310, 75, 25)
    86. $Button7 = GUICtrlCreateButton("预留", 327, 310, 40, 25)
    87. $Button8 = GUICtrlCreateButton("隐藏窗口", 27, 340, 75, 25)
    88. $Button9 = GUICtrlCreateButton("系统启动免登录密码", 102, 340, 120, 25)
    89. GUISetState(@SW_SHOW)
    90. #EndRegion ### END Koda GUI section ###
    91. HotKeySet("^!f", "hotkey")
    92. Opt("TrayAutoPause",0)
    93. If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","时间") <> "" Then;读取注册表指定的值
    94.         Opt("TrayMenuMode",0)
    95.                 Opt("TrayIconHide",0)
    96.         
    97. EndIf

    98. While 1
    99.         $Tray = TrayGetMsg();得到一个系统托盘图标项目产生的事件.
    100.         $msg = GUIGetMsg(1);捕获窗口消
    101.         Select
    102.         Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $Form0;如果点下的是$GUI_EVENT_CLOSE(关闭)
    103.                 Exit
    104.                 Case $msg[0] = $Button3
    105.                 RegRun();操作Func RegRun()设定事件
    106.                 MsgBox(0,"温馨提醒您:","已经在注册表写入开机自启动,请勿移动本程序到别的位置.")
    107.                 Case $msg[0] = $Button4
    108.                 RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","定时工具")
    109.                         MsgBox(0,"温馨提醒您:","开机自动启动已从注册表中移除")        
    110.         Case $msg[0] = $Button5
    111.                 Shutdown(1);关机
    112.         Case $msg[0] = $Button6
    113.                 Shutdown(2);重启        
    114.                 Case $msg[0] = $Button7
    115.                 MsgBox(32,"温馨提醒您:","此窗口为其他功能预留。")        
    116.                 Case $msg[0] = $Button8
    117.                 Opt("TrayIconHide", 0) ;隐藏托盘区图标
    118.                                 Opt("TrayMenuMode",1)
    119.                                 GUISetState(@SW_HIDE,$Form0)
    120.                 Case $msg[0] = $Button9
    121.                                 Run("rundll32.exe netplwiz.dll,UsersRunDll")
    122.                                 Run("control userpasswords2")
    123.         Case $msg[0] = $GUI_EVENT_MINIMIZE;对话框窗口被最小化
    124.                 Opt("TrayMenuMode",1)
    125.                 GUISetState(@SW_HIDE,$Form0)
    126.                 TrayTip("关机助手","点击还原!",5,1)
    127.         Case $msg[0] = $Button2
    128.                 RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\TIME")
    129.                 GUICtrlSetData($Label4,"执行时间: 暂时未设置定时任务")
    130.                 TrayTip("通知您","当前任务已经清理完毕,可重新设定.",1,2)
    131.                 Case $msg[0] = $Button1
    132.                                 RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\TIME")
    133.         $SET = GUICtrlRead($Date1)
    134.                         If StringLen($SET) = 7 Then
    135.                         $SET = "0"&$SET
    136.             EndIf
    137.                         If GUICtrlRead($Radio1,0)=1 Then
    138.                                 $S1="重启"
    139.                         ElseIf GUICtrlRead($Radio2,0)=1 Then
    140.                                 $S1="关机"                                
    141.                         ElseIf GUICtrlRead($Radio3,0)=1 Then
    142.                                 $S1="强制重启"
    143.                         ElseIf GUICtrlRead($Radio4,0)=1 Then
    144.                                 $S1="强制关机"        
    145.                         ElseIf GUICtrlRead($Radio1,0)<>1 Or GUICtrlRead($Radio2,0)<>1 Or GUICtrlRead($Radio3,0)<>1 Or GUICtrlRead($Radio3,0)<>1 Then
    146.                                 $S1="强制重启"               
    147.                         EndIf
    148.                 $W1=GUICtrlRead($Checkbox1,1)
    149.                 $W2=GUICtrlRead($Checkbox2,0)
    150.                 $W3=GUICtrlRead($Checkbox3,0)
    151.                 $W4=GUICtrlRead($Checkbox4,0)
    152.                 $W5=GUICtrlRead($Checkbox5,0)
    153.                 $W6=GUICtrlRead($Checkbox6,0)
    154.                 $W7=GUICtrlRead($Checkbox7,0)
    155.                 $W8=GUICtrlRead($Checkbox8,0)        
    156.                ;ToolTip("1" & $W1 & "2" & $W2 & "3"  & $W3 & "4" & $W4 & "5"& $W5&  "6"& $W6 & "7"& $W7& "8" & $W8 & "......",0,0)
    157.                 Sleep(1000)
    158.                 If $W8=1 And ($W1=1 Or $W2=1 Or $W3=1 Or $W4=1 Or $W5=1 Or $W6=1 Or $W7=1 ) then
    159.                     $WEEK8="每日"
    160.                         RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","每日","REG_SZ",$WEEK8)         
    161.                 Else
    162.                         $WEEK8="每日"               
    163.                         RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","每日","REG_SZ",$WEEK8)
    164.                 EndIf
    165.                  If $W1=1 Then
    166.                         $WEEK1="星期一"
    167.                         RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期一","REG_SZ",$WEEK1)
    168.                   EndIf
    169.                   If $W2=1 Then
    170.                         $WEEK2="星期二"
    171.                         RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期二","REG_SZ",$WEEK2)
    172.                   EndIf
    173.                   If  $W3=1 Then
    174.                         $WEEK3="星期三"
    175.                         RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期三","REG_SZ",$WEEK3)
    176.                   EndIf
    177.                  If  $W4=1 Then
    178.                     $WEEK4="星期四"
    179.                         RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期四","REG_SZ",$WEEK4)
    180.                   EndIf
    181.                  If $W5=1 Then
    182.                     $WEEK5="星期五"
    183.                         RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期五","REG_SZ",$WEEK5)
    184.                   EndIf
    185.                  If $W6=1=1 Then
    186.                     $WEEK6="星期六"
    187.                         RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期六","REG_SZ",$WEEK6)
    188.                  EndIf
    189.                  If $W7=1=1 Then
    190.                     $WEEK7="星期日"
    191.                         RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期日","REG_SZ",$WEEK7)                        
    192.                  EndIf
    193.                
    194.                 RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","时间","REG_SZ",$SET)
    195.                 RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","事件","REG_SZ",$S1)
    196.                
    197.                
    198.                 TrayTip("通知","已经设定完成!请勿关闭程序,否则设定将不起作用.",1,2)
    199. EndSelect
    200.                
    201.         Switch $Tray
    202.                 Case $TRAY_EVENT_PRIMARYDOWN;按下了鼠标左键
    203.                         GUISetState(@SW_SHOW);激活指定窗口并使其以当前大小和位置信息显示
    204.         EndSwitch
    205.         $T1 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","时间")
    206.         $R0 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","事件")
    207.                 $WK1 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期一")
    208.                 $WK2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期二")
    209.                 $WK3 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期三")
    210.                 $WK4 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期四")
    211.                 $WK5 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期五")
    212.                 $WK6 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期六")
    213.                 $WK7 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","星期日")
    214.                 $WK8 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","每日")
    215.                
    216.         If $T2 <> $T1 Or $R0 <> $R1 Then;"<>"比较是否不相等,不相等该表达返回1否则返回0
    217.                 $R1 = $R0
    218.                 $T2 = $T1
    219.                                 If $WK8="每日" Then
    220.                                 GUICtrlSetData($Label4,"每周:"&$WK8&"  "&$T1&"("&$R0&")")
    221.                                 Else
    222.                 GUICtrlSetData($Label4,"每周: "&$WK1&" "&$WK2&" "&$WK3&" "&$WK4&" "&$WK5&" "&$WK6&" "&$WK7&"  "&$T1&"("&$R0&")")
    223.                                 EndIf
    224.         EndIf
    225.         $T3 = @HOUR&":"&@MIN&":"&@SEC;$T3等于当前时间
    226.         If $T3 <> $T4 then
    227.                 $T4 = $T3
    228.                 GUICtrlSetData($Label3,""&@MON&"月"&@MDAY&"日 "&@HOUR&":"&@MIN&":"&@SEC&"  ");修改指定控件的相关数据
    229.         EndIf
    230.         If $T1 = $T3 Then
    231.                 If $R0 = "关机" Then;读取注册表值,当$RO值等于组合列表"关机"时,则执行$RNOW = 1
    232.                         $RNOW = 1;关机事件
    233.                 ElseIf $R0 = "重启" Then
    234.                         $RNOW = 2;重启事件
    235.                 ElseIf $R0 = "待机" Then
    236.                         $RNOW = 32;待机事件
    237.                 ElseIf $R0 = "休眠" Then
    238.                         $RNOW = 64;休眠事件
    239.                 ElseIf $R0 = "强制关机" Then
    240.                         $RNOW = 5;强行关机
    241.                 ElseIf $R0 = "强制重启" Then
    242.                         $RNOW = 6;强行重启
    243.                 EndIf
    244.                 Shutdown($RNOW);shutdown关机事件
    245.         EndIf
    246.         If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TIME","时间") <> "" Then
    247.         $T5 = StringReplace($T1,":","");替换字符串中的指定子串
    248.         $T6 = StringReplace($T3,":","")
    249.         If StringMid($T5,1,2)-StringMid($T6,1,2) = 0 Then
    250.                 If StringMid($T5,3,2) - StringMid($T6,3,2) = 0  Then
    251.                         If $T5-$T6 > 0 Then
    252.                         TrayTip("温馨提醒您:","还有"&$T5-$T6&"秒开始执行关机程序.....",10,1)
    253.                         EndIf
    254.                 Elseif StringMid($T5,3,2)-StringMid($T6,3,2) = 1  Then
    255.                 If StringMid($T5,5,2)+60-StringMid($T6,5,2) > 0 Then
    256.                 TrayTip("温馨提醒您:","还有"&StringMid($T5,5,2)+60-StringMid($T6,5,2)&"秒开始执行关机程序.....",10,1)
    257.                 EndIf
    258.         EndIf
    259. EndIf
    260. EndIf
    261. WEnd

    262. Func RegRun();修改注册表,添加程序开机自启动项
    263. dim $Run='HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
    264. RegWrite($Run,'定时工具','REG_SZ',@AutoItExe);@AutoItExe当前脚本的完整路径.
    265. EndFunc;

    266. Func hotkey()
    267. Opt("TrayIconHide", 1) ;隐藏托盘区图标
    268. Opt("TrayMenuMode",0)
    269. GUISetState(@SW_SHOW,$Form0)
    270. EndFunc;
    复制代码








    上一篇:腾讯与PUBG达成战略合作《绝地求生》中国大陆独家代理运营权
    下一篇:更新KB4055254补丁发布 修复部分爱普生打印机无法打印问题
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则