在VBS中设置计时器



我想修改脚本以启动计算器应用程序2分钟,然后关闭它。脚本只能启动应用程序。请帮忙。

Set colMonitoredEvents = GetObject("winmgmts:")._
ExecNotificationQuery("SELECT * FROM Win32_PowerManagementEvent")
Do
Set strLatestEvent = colMonitoredEvents.NextEvent
If strLatestEvent.EventType = 4 Then 
Set objWMIService = GetObject("winmgmts:\.rootcimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")
For Each objItem in colItems
If objItem.name = "Calculator.exe" then objItem.terminate
Next
ElseIf strLatestEvent.EventType = 7 Then 
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "calc.exe", 1, false
End If
Loop

我想修改它以启动并关闭calculator.exe。

这只需使用SleepTaskKill即可完成。请注意,可能从Windows 8开始,计算器是一个UWP应用程序,Calc.exe用于启动它,但Calculator.exe是终止它的进程名称。在Windows 7上,两者都是Calc.exe

Set oWSH = CreateObject("Wscript.Shell")
oWSH.Run "Calc.exe", 1, False
WScript.Sleep 120000 'two minutes
oWSH.Run "TaskKill /im Calculator.exe /f", 0, False

如果你想保留原始脚本的功能,当计算机进入睡眠状态并在唤醒时重新启动计算器时,它会杀死计算器,并在杀死之前添加两分钟的延迟,那么可以这样做:

Set oWSH = CreateObject("Wscript.Shell")
Set colMonitoredEvents = GetObject("winmgmts:").ExecNotificationQuery("SELECT * FROM Win32_PowerManagementEvent")
Do
Set strLatestEvent = colMonitoredEvents.NextEvent
If strLatestEvent.EventType = 4 Then
WScript.Sleep 120000 'two minutes
oWSH.Run "TaskKill /im Calculator.exe /f", 0, False
ElseIf strLatestEvent.EventType = 7 Then 
oWSH.Run "calc.exe", 1, False
End If
WScript.Sleep 500
Loop

请注意,我在循环中添加了0.5秒的延迟,以防止不必要的CPU负载。

最新更新