杂项:自动关机/停止自动关机VBS脚本

‘监控进程并关闭进程脚本

‘原出处是哪已经不知道了 反正这段是copy的
On Error Resume Next
strComputer = “.”
arrTargetProcs = Array(“wscript.exe”)
‘数组里为要监视的进程名 关机进程是用vbs开的 进程名是wscript.exe
Set SINK = WScript.CreateObject(“WbemScripting.SWbemSink”,”SINK_”)
Set objWMIService = GetObject(“winmgmts:” & _
“{impersonationLevel=impersonate}!\” & strComputer & “\root\cimv2”)
objWMIService.ExecNotificationQueryAsync SINK, _
“SELECT * FROM _InstanceCreationEvent WITHIN 1 ” &
“WHERE TargetInstance ISA ‘Win32_Process’”
Wscript.Echo “Are monitoring processes 监控关机进程 …”
Do
WScript.Sleep 1000
Loop
*****************************************************************
Sub SINK_OnObjectReady(objLatestEvent, objAsyncContext)
‘Trap asynchronous events.
For Each strTargetProc In arrTargetProcs
If LCase(objLatestEvent.TargetInstance.Name) = LCase(strTargetProc) Then
intReturn = objLatestEvent.TargetInstance.Terminate
’ 下面是弹出一个对话框
‘If intReturn = 0 Then
’ Wscript.Echo “Time: ” & Now & “, Succeed!” & chr(9) & _
’ “Name: ” & objLatestEvent.TargetInstance.Name
‘Else
‘Wscript.Echo “Time: ” & Now & “, Failed!” & chr(9) & _
’ “Name: ” & objLatestEvent.TargetInstance.Name
‘End If

End If
Next
End Sub

先开启监控检测,则关机脚本开启后将被立即kill


‘关机脚本 并确保工作文档有被正常保存
On Error Resume Next
Dim objShell,intReturn,mbFinished,moWindow
Set objShell = CreateObject(“Wscript.Shell”)
mbFinished = False

Call main()

‘==================================主程序结束=============================================

Sub Main()
Do
time1=time

intReturn = objShell.Popup("系统即将在30分钟后进入关机状态,如需继续使用电脑,请点击【确定】",1805, "系统将在30分钟后进入关机状态......")

time2=time
time3=DateDiff("s",time1,time2)

If time3>1800 Then
    Go_Sleep()
    Exit do
Else 
    Set moWindow = WScript.CreateObject("InternetExplorer.Application","IE_")
    Call Wait_Sleep()
End If 

Loop
End Sub

‘================主程序完成================

Sub Go_Sleep()

Const Shutdown_Mod = 5 ‘Forced Shutdown (1 + 4)
Set objNet = WScript.CreateObject( “WScript.Network” )
Set objWMIService = GetObject(“winmgmts:{impersonationLevel=impersonate,” & _
“(Shutdown)}!\” & objNet.ComputerName & “\root\cimv2”) ‘获得对象
Set colOSes = objWMIService.ExecQuery(“SELECT * FROM Win32_OperatingSystem”)
For Each objOS In colOSes ‘只可能有一个 objOS 在colOSes集合中
intReturn = objOS.Win32Shutdown(Shutdown_Mod)
If intReturn <> 0 Then
msgbox “您有文档未保存,关机操作失败”
End If
Next

WScript.Quit

End Sub

Sub Wait_Sleep()
dim i
mbFinished = False
i=0

moWindow.Navigate "about:blank"
With moWindow.Document
    .Write "10分钟后进入关机状态,您是否需要取消今天的关机任务?
点击【加班中,今天不关机了】将取消关机。还剩余600秒进入关机状态

    
" .Title ="取消关机" End With moWindow.Document.Close With moWindow .Toolbar = False .Statusbar = False .Menubar = False .Resizable = False .Width =500 .Height=130 .left= 350 .top= 350 Set .document.all.btnOK.onclick = GetRef("evtOK") Set .document.all.btnCancel.onclick = GetRef("evtCancel") .Visible = true End With Do WScript.Sleep 1000 i=i+1 if i<600 then moWindow.Document.All.str.innerHTML = 600-i If mbFinished Then Exit Do else Call Go_Sleep() end if Loop

End Sub

Sub evtOK
mbFinished = True
moWindow.Quit
Wscript.Quit
End Sub

Sub evtCancel
mbFinished = True
moWindow.Visible = false
moWindow.Quit
WScript.Sleep(3600000)
End Sub

Sub IE_onQuit
mbFinished = True
End Sub

你可能感兴趣的:(杂项)