Board logo

标题: 系统关机管理→VBS版 [打印本页]

作者: baomaboy     时间: 2007-3-17 05:01    标题: 系统关机管理→VBS版
其实这个东西是中了一次病毒后才想到要做的,那病毒一直出现60秒倒计时关机,让你连查找分析它得机会也没有,为了省去键盘输入的过程,做成了热键,也方便了不知道命令行用法的人快速取消倒计时关机。
出现倒计时关机窗口时按:Ctrl+Alt+↑立即取消倒计时关机。

其他使用方法不做说明了,看图吧。

Last edited by baomaboy on 2007-3-17 at 01:22 PM ]
附件 1: Manage_WinPower.rar (2007-3-17 05:01, 31.43 KiB,下载次数: 105)
附件 2: 1.GIF (2007-3-17 05:01, 40 KiB,下载次数: 13)


附件 3: 3.GIF (2007-3-17 05:03, 10.97 KiB,下载次数: 2)



作者: heicai     时间: 2007-3-17 05:15
能帖下源码给学习吗??

作者: ieutk     时间: 2007-3-17 05:21
Originally posted by heicai at 2007-3-16 04:15 PM:
能帖下源码给学习吗??





楼主有发附件!

作者: heicai     时间: 2007-3-17 05:24
Originally posted by ieutk at 2007-3-16 04:21 PM:





楼主有发附件!
里面好多类似乱码

作者: baomaboy     时间: 2007-4-13 14:12

Dim WshShell,FSO
On Error Resume Next
Set WshShell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WinVer = WshShell.Environment("Process")
Set Args = WScript.Arguments
CloseTime = 5
FileName = WScript.ScriptName
FileFullName = WScript.ScriptFullName
FilePath = FSO.GetParentFolderName(FileFullName)
InsPath = FSO.GetSpecialFolder(1)
InsFullName = FSO.BuildPath(InsPath ,FileName)
LnkPathNT = WshShell.SpecialFolders(2)
LnkPath9X = WshShell.SpecialFolders(14)
LnkPathAll = WshShell.SpecialFolders("StartMenu")
OtherFileName="shutdown.exe"
OtherFilePath=FSO.GetSpecialFolder(1)
TemFileName="无标题"
TemFilePath=FSO.GetSpecialFolder(2)
Copyright="玲珑科技"
QQ="QQ:25926183"
Email="Email:fty1995@163.com"
InsTitle="WinNT关机管理程序"
InsAnswer="WinNT关机管理程序"
RegPath1="HKLM\SOFTWARE\LLKJ\SYSSoft\Manage_WinPower\"
RegValue1="关机管理"
RegForm1="REG_SZ"
RegPath2="HKLM\SOFTWARE\LLKJ\SYSSoft\Manage_WinPower\DelAllAtShutDown"
RegValue2="No"
RegValue3="Yes"
RegValue4="All"
RegForm2="REG_SZ"
If WinVer("OS") = "Windows_NT" Then
LnkPath=LnkPathNT
MyShortcutFolder="快捷功能"
MyShortcutName="关机管理(CTRL+ALT+↑).Lnk"
MyShortcutHotKey="CTRL+ALT+Up"
MyShortcutHotKeybak="CTRL+ALT+↑"
IF FileFullName <> InsFullName then
intAnswer = MsgBox("【是】将“"+ InsAnswer +"”加入到快捷键" +chr(34)+ MyShortcutHotKeybak +chr(34)+ ","&Chr(10)&Chr(10)&"【否】将“"+ InsAnswer +"”取消系统热键" +chr(34)+ MyShortcutHotKeybak +chr(34)+ "。 ", vbQuestion + vbYesNoCancel, "安装 - "+ InsTitle +" - "+ Copyright)
If intAnswer = vbYes Then
FSO.GetFile(FileFullName).Copy(InsFullName)
If (FSO.FileExists(FSO.BuildPath(OtherFilePath,OtherFileName))) Then
else
If (FSO.FileExists(FSO.BuildPath(FilePath,"shutdown.llkj"))) Then
FSO.GetFile(FSO.BuildPath(FilePath,"shutdown.llkj")).Copy(FSO.BuildPath(OtherFilePath,OtherFileName))
else
Call alltovbs
end if
end if
If (FSO.FolderExists(FSO.BuildPath(LnkPath ,"\附件\" & MyShortcutFolder))) Then
else
FSO.CreateFolder(FSO.BuildPath(LnkPath ,"\附件\" & MyShortcutFolder))
end if
Set MyShortcut = WshShell.CreateShortcut(FSO.BuildPath(LnkPath ,"附件\" & MyShortcutFolder & "\" & MyShortcutName))
MyShortcut.TargetPath = (InsFullName)
MyShortcut.WorkingDirectory = (InsPath)
MyShortcut.Windowstyle = 4
MyShortcut.IconLocation = (FSO.BuildPath(LnkPath ,"Shell32.dll, 27"))
MyShortcut.Description = "定时关机、倒计时关机、立即关机、取消定时及倒计时关机"
MyShortcut.Hotkey = MyShortcutHotKey
MyShortcut.Save
WshSHell.RegWrite RegPath1,RegValue1,RegForm1
WshSHell.RegWrite RegPath2,RegValue2,RegForm2
WshShell.popup _
"添加脚本文件:"+chr(10)+InsFullName+chr(10)+chr(10)+ _
"添加快捷方式:"+chr(10)+ FSO.BuildPath(LnkPath ,"附件\" & MyShortcutFolder & "\" & MyShortcutName) +chr(10)+chr(10)+ _
"添加系统热键:" +chr(10)+chr(34) & MyShortcutHotKeybak +chr(34)+chr(10)+chr(10)+ _
"此程序可用于:"+chr(10)+"1.定时关闭装有 ShutDown 的 Windows 系统。"+chr(10)+ _
"2.倒计时关闭装 ShutDown 的 Windows 系统。"+chr(10)+ "3.立即关闭装有 ShutDown 的 Windows 系统。"+chr(10)+ _
"4.取消误操作 ShutDown 造成系统定时关机。"+chr(10)+ _
"5.取消误操作 ShutDown 造成的倒计时关机。"+chr(10)+"6.取消病毒破坏进程 SVCHOST 造成的倒计时关机。"+ chr(10) &chr(10) & _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "安装成功 - "+ InsTitle +" - "+ Copyright, 0 + 64
end if
If intAnswer = vbNo Then
FSO.DeleteFile InsFullName
FSO.DeleteFile FSO.BuildPath(LnkPath ,"附件\" & MyShortcutFolder & "\" & MyShortcutName)
WshSHell.RegDelete RegPath2
WshSHell.RegDelete RegPath1
WshShell.popup _
"删除脚本文件:"+chr(10)+InsFullName+chr(10)+chr(10)+ _
"删除快捷方式:"+chr(10)+ FSO.BuildPath(LnkPath ,"附件\" & MyShortcutFolder & "\" & MyShortcutName) +chr(10)+chr(10)+ _
"取消系统热键:" +chr(10)+chr(34) & MyShortcutHotKeybak +chr(34)+chr(10)+chr(10)+ _
"此程序可用于:"+chr(10)+"1.定时关闭装有 ShutDown 的 Windows 系统。"+chr(10)+ _
"2.倒计时关闭装 ShutDown 的 Windows 系统。"+chr(10)+ "3.立即关闭装有 ShutDown 的 Windows 系统。"+chr(10)+ _
"4.取消误操作 ShutDown 造成系统定时关机。"+chr(10)+ _
"5.取消误操作 ShutDown 造成的倒计时关机。"+chr(10)+"6.取消病毒破坏进程 SVCHOST 造成的倒计时关机。"+ chr(10) &chr(10) & _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "卸载成功 - "+ InsTitle +" - "+ Copyright, 0 + 64
end if
If intAnswer = vbCancel Then
end if
ELSE
If WshSHell.AppActivate("系统关机") = True Then
'WshSHell.SendKeys "{WIN}+{M}"
WshSHell.Run ("ShutDown -A"), vbHide
WScript.Sleep 1000
WshSHell.Run ("ShutDown -A"), vbHide
WshShell.popup chr(10) &_
"您已经成功的取消了倒计时关机。"+ chr(10) &chr(10) & _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "取消倒计时关机 - "+ InsTitle +" - "+ Copyright, 0 + 64
else

Dim MyTime,MyOut1,MyOut2
MyTime=null
MyTime=InputBox("1.请输入定时时间:(格式20:10)"&vblf&vblf&"2.倒计时关机时间:(单位/分钟)"&vblf&vblf&"3.输入‘xxx’可以立即关机。"&vblf&vblf&"4.输入‘yyy’取消定时关机。",InsTitle&"- "&Copyright,"1")
If IsNumeric(MyTime)=False Then
If IsDate(MyTime)=True Then
WshShell.Run ("at "&MyTime&" ShutDown -s"), vbHide
WshShell.popup chr(10) &_
"定时成功!电脑将在‘ "&MyTime&" ’关机!"+ chr(10) &chr(10) & _
"取消关机请按快捷键: "&chr(34)+ MyShortcutHotKeybak +chr(34)+chr(10) &_
chr(10) &CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "定时成功 - "+ InsTitle +" - "+ Copyright, 0 + 64
Else
If LCase(MyTime)="xxx" Then
WshShell.Run ("ShutDown -s -t 0"), vbHide
WScript.Quit(0)
End If
If LCase(MyTime)="yyy" Then
strComputer = "."
ZNum=0
DNum=0
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colScheduledJobs = objWMIService.ExecQuery ("Select * from Win32_ScheduledJob")
If colScheduledJobs.count=0 Then
WshShell.popup chr(10) &_
"目前系统还没有定时关机任务计划!"+ chr(10) &chr(10) & _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "错误提示 - "+ InsTitle +" - "+ Copyright, 0 + 48
End If
For Each objJob in colScheduledJobs
RWID=objJob.JobID
RWCmd=objJob.Command
RWTime=objJob.StartTime
RWCmd_SD = Left(RWCmd, 8)
RWTime_Q=Right(RWTime, 3)
RWTime_H=Mid(RWTime,9,2)
RWTime_M=Mid(RWTime,11,2)
RWTime_Q2=Mid(RWTime,22,1)
if RWTime_Q/60<10 then
tempdat="0"
else
tempdat=""
end if
if RWTime_Q2="+" then
RWTime_SQ2 = "东 "&tempdat&RWTime_Q/60&" 区"
Elseif RWTime_Q2="-" then
RWTime_SQ2 = "西 "&tempdat&RWTime_Q/60&" 区"
Else
RWTime_SQ2 = "第‘0’区"
End If
if RWTime_Q="480" Then
RWTime_SQ="北京时间"
Elseif RWTime_Q="000" Then
RWTime_SQ="国际时间"
Else
RWTime_SQ="这是哪啊"
End If
if UCase(RWCmd_SD)<>"SHUTDOWN" Then
WshShell.popup chr(10) &_
"目前系统没有‘定时关机’的任务计划!"+ chr(10) &chr(10) & _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "错误提示 - "+ InsTitle +" - "+ Copyright, 0 + 48
Else
ZNum=ZNum+1
if WshSHell.RegRead(RegPath2) = RegValue4 Then
Set objInstance = objWMIService.Get("Win32_ScheduledJob.JobID="&RWID)
err = objInstance.Delete
Else
CloseWinTime=InputBox("任务编号:{ "&RWID&" }"&" "&"{ "&RWTime_SQ2&" }"&vblf&vblf&"关机时间:{ "&RWTime_H&"点"&RWTime_M&"分"&" }"&"{ "&RWTime_SQ&" }"&vblf&vblf&"如果输入:{yyy} 则取消所有定时关机。","取消定时关机 - 第 "&ZNum&" 个关机任务。","取消单个定时关机任务请直接点‘确定’")
If LCase(CloseWinTime)="yyy" Then
WshSHell.RegWrite RegPath2,RegValue4,RegForm2
Set objInstance = objWMIService.Get("Win32_ScheduledJob.JobID="&RWID)
err = objInstance.Delete

Elseif CloseWinTime<>"" Then
WshSHell.RegWrite RegPath2,RegValue3,RegForm2
DNum=DNum+1
Set objInstance = objWMIService.Get("Win32_ScheduledJob.JobID="&RWID)
err = objInstance.Delete
end if
end if
end if
Next
else
WshShell.popup chr(10) &_
"您的输入有错误!请重新输入!"+ chr(10) &chr(10) & _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "错误提示 - "+ InsTitle +" - "+ Copyright, 0 + 48
end if
End If
Else
If MyTime<=600 and MyTime>0 Then
WshShell.popup chr(10) &_
"设置成功!电脑将在‘ "&MyTime&" ’分钟后关机!"+ chr(10) &chr(10) & _
"取消倒计时关机请按快捷键: "&chr(34)+ MyShortcutHotKeybak +chr(34)+chr(10) &_
chr(10) &CloseTime & " 秒钟后本窗口关闭时开始倒计时!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "设置成功 - "+ InsTitle +" - "+ Copyright, 0 + 64
WshShell.Run ("ShutDown -s -t "&MyTime*60), vbHide
Elseif MyTime<>"" then
WshShell.popup _
chr(10)+"输入错误!倒计时时间不能为 0 分钟或多于 600 分钟(10小时)!"+chr(10)+ _
chr(10)+chr(10) & CloseTime & " 秒后本窗口自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "错误提示 - "+ InsTitle +" - "+ Copyright, 0 + 48
End If
End If
END IF
if WshSHell.RegRead(RegPath2) = RegValue4 Then
WshSHell.RegWrite RegPath2,RegValue2,RegForm2
WshShell.popup chr(10) & _
"您已经成功的取消了全部‘ " & ZNum & " ’个计划任务定时关机。" + chr(10) & chr(10) & _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "取消定时关机 - "+ InsTitle +" - "+ Copyright, 0 + 64
elseif WshSHell.RegRead(RegPath2) = RegValue3 Then
WshSHell.RegWrite RegPath2,RegValue2,RegForm2
WshShell.popup chr(10) &_
"您取消了‘ "& DNum &" ’个定时关机,还有‘ "& ZNum-DNum &" ’个任务没取消。"+ chr(10) &chr(10) & _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "取消定时关机 - "+ InsTitle +" - "+ Copyright, 0 + 64
end if
END IF
Else
WshShell.popup _
"程序要求运行于 " + chr(34)+WinVer("OS")+chr(34)+" 环境,安装失败。"+chr(10)+chr(10)+ _
"此程序可用于:"+chr(10)+"1.定时关闭装有 ShutDown 的 Windows 系统。"+chr(10)+ _
"2.倒计时关闭装 ShutDown 的 Windows 系统。"+chr(10)+ "3.立即关闭装有 ShutDown 的 Windows 系统。"+chr(10)+ _
"4.取消误操作 ShutDown 造成系统定时关机。"+chr(10)+ _
"5.取消误操作 ShutDown 造成的倒计时关机。"+chr(10)+"6.取消病毒破坏进程 SVCHOST 造成的倒计时关机。"+ chr(10) &chr(10) & _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _
, CloseTime, "安装失败 - "+ InsTitle +" - "+ Copyright, 0 + 48
End If
Set WshShell = Nothing
Set FSO = Nothing
Set Args = Nothing
WScript.Quit(0)
sub alltovbs()
'' 自生成shutdown.exe
end sub

ÿ

Last edited by baomaboy on 2008-3-24 at 10:05 PM ]

作者: okmhy     时间: 2007-6-13 19:06    标题: 晕倒~!
是不是我真的太垃圾了,那么多的代码,能看懂的不到千之一..

作者: Vampire     时间: 2007-6-13 19:13
向楼主致敬!!
辛苦做东西出来,还把源码拿出来供大家学习。
榜样!
PS:顺便说几句,以前那**科技的作品都是你发的哈,能不能也把源码拿出来学习学习嘛。。

作者: slore     时间: 2007-6-13 19:35
shutdown -a就取消了啊

作者: baomaboy     时间: 2007-6-13 23:12
是的 如果你只是想 定时关机 at Time ShutDown -s 就行了啊

如果你想 做个快捷键,创建个快捷方式,在右键属性里自己设就好了,

如果你不学无术只是贪玩的话可以考虑看看^_^

作者: baomaboy     时间: 2007-6-13 23:13
Originally posted by Vampire at 2007-6-13 19:13:
向楼主致敬!!
辛苦做东西出来,还把源码拿出来供大家学习。
榜样!
PS:顺便说几句,以前那**科技的作品都是你发的哈,能不能也把源码拿出来学习学习嘛。。


没什么可看的,一堆垃圾而已。。。

作者: eech     时间: 2007-6-13 23:50
baomaboy又出新作品了,支持下

作者: chdpc     时间: 2007-6-15 01:49
vbs代码编辑器及学习资料推荐

作者: sfencer     时间: 2007-6-16 15:06
看不明白,好好学习一下

作者: zhoushijay     时间: 2007-6-16 15:20
几天不来baoma兄又出新大作了,小弟最近在研究C,呵呵,所以很少来这里逛了,每次上来都能看到baomaboy的新作

作者: wert123     时间: 2007-6-16 16:38
编程之路,越来越长,弥长弥精,弥精弥长,
由于我还是菜鸟,所以现在完全看懂是不行的,完全看懂了是要得几天的,写出来了豆腐也就能砸死人的
还有什么话要说,还有多少泪要流,我对baomaboy已死心塌地的五体投地了啊~~~!

作者: aaa2117     时间: 2007-11-1 16:36
学习了

作者: aaa2117     时间: 2007-11-1 16:43
问一下.如果没有开系统的服务.那怎么办?