利用VBS循环延时关闭指定进程

利用VBS循环延时关闭指定进程,第1张

do while true

Wscript.sleep 1000

Set WshShell = Wscript.CreateObject("Wscript.Shell")

WshShell.Run "罩简伍taskkill /f /im test.exe" ,0

loop

其咐睁中 test.exe是进程名称 1000是延时 等于物或1秒

思路:

1. 用RegWrite将vbs文件名写入开机启动注册表项:

"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "ThunderSpy.vbs", "REG_SZ" 'vbs文件名请自己修改

不过写注册表 *** 作可能会被杀软拦截。

2. 等待10分钟

WScript.Sleep 10*60*1000

3. 启动迅雷并隐藏

Set oShell = WScript.CreateObject ("WSCript.shell")

oShell.run "cmd /c start C:\Program Files\Thunder", 汪冲0 '自己修改迅雷路径

/c 选项表示执行指定的命令后关闭命令提示窗口(黑窗口)。

第二个参数0表示隐藏应用。

4. 关闭迅雷(杀进程)

两种方法。

DOS命令TASKKILL方法:

Set wshShell = WScript.CreateObject("WScript.Shell") 

wshShell.run "TASKKILL /IM Thunder.exe", 0 '自己确认迅雷的进程名

WMI方法档老:

strComputer="." 

Set objWMIService = GetObject("winmgmts:\\"困蠢歼 & strComputer & "\root\cimv2")

Set colProcessList=objWMIService.ExecQuery ("select * from Win32_Process where Name='Thunder.exe'") '自己确认迅雷的进程名

For Each objProcess in colProcessList 

    objProcess.Terminate()

Next

‘//RL

On Error Resume Next

Const vbOK = 1

Const vbCancel = 2

Dim ML '//Minutes left

Dim ANS

Dim Wsh:Set Wsh = WScript.CreateObject("WScript.Shell")

Do

ML = GetML()

If ML = 0 Then WScript.Quit(0) '//退出

If ML = (-1) Then Call MsgBox("对不起,输入有误。" &vbCrLf &_

"请输入十进制正整数。",vbExclamation,"输入有肢正误")

Until ML >0

Dim I

For I = 1 To ML '//Start from 1

WScript.Sleep(60 * 1000) '//1分钟

Next I

ANS = MsgBox("你的计时已到,请保存文件,并按确定关机。", _

vbOKCancel + vbInformation , "提示")

'//按照lz的意思,我个人觉得这里有bug(即使用户不知道强制终止进程)

'//只要不理睬这个对话框就不会关机。可以修改成Wsh.Popup()啊

If ANS = vbOK Then

Call Wsh.Run("SHUTDOWN -S -F -T 0",0) '//Run hide,我没有要5秒,

Else '//想要就改历胡悔成"SHUTDOWN -S -F -T 5"

Call Force()

End If

'////////////////////////////////////////////////////////////////////////

Sub Force()

Wsh.Popup("3分钟后即将关机。请立刻保存工作!", _

5 , "警告" , vbExclamation + vbSystemModal)

WScript.Sleep(60 * 1000 * 3) '//3分钟

Call Wsh.Run("SHUTDOWN -S -F -T 0",0)

End Sub

'///////做乎/////////////////////////////////////////////////////////////////

Function GetML()

On Error Resume Next

ANS = Trim(InputBox("你要在多少分钟之后提示关机?" &vbCrLf &_

"输入0或者输入空退出.","定时关机",))

Dim L : L = Len(ANS)

If L = 0 Then

GetML = 0 '//输入空

Exit Function

End If

Dim Rtn : Rtn = True

Dim I

For I = 1 To L

Rtn = Rtn And IsDigit(Mid(ANS,I,1))

Next I

If Not Rtn Then

GetML = (-1) '//输入不合法

Exit Function

End If

GetML = CInt(ANS)

End Sub

Function IsDigit( Src )

If Src = "0" Or Src = "1" Or Src = "2" Or Src = "3" Or Src = "4" _

Or Src = "5" Or Src = "6" Or Src = "7" Or Src = "8" Or Src = "9" Then

IsDigit = True

Else

IsDigit = False

End If

End Function


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12511764.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存