一个监视判断指定程序是否存在并相应动作的VBS需求

看流程图就好... 看流程图就好 展开
 我来答
哲左
2015-04-05 · TA获得超过420个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:408万
展开全部

第一张流程图是守护特定其他进程?可行,代码见下文

第二张流程图是守护自身进程?不可行,因为你无法让没运行的脚本运行判断代码,这等同于说“没来的人请举手”。

如果非要守护脚本进程,可以用相互守护。A判断B,B判断A。


代码:

Dim wsh,wmi,fso,path_a,path_b,list,pid

Set wsh = CreateObject("WScript.Shell")
Set wmi = GetObject("winmgmts:" & "{impersonationlevel=impersonate}!\\.\root\cimv2")
Set fso = CreateObject("Scripting.FileSystemObject")

path_a = "x:\x\pid.txt"
path_b = "x:\x\x.xxx"
t = 5000

i = 0
DO Until i = 1
  check()
  Wscript.Sleep t
Loop

Function check()
  Set list = fso.OpenTextFile(path_a, 1, 0)
  Do While list.AtEndOfStream <> True
    pid = list.ReadLine
    If Not isProcessExists(pid) Then wsh.run path_b
  Loop
  list.Close
End Function  

Function isProcessExists(x)
    Set find = wmi.ExecQuery("Select * from Win32_Process Where handle='" & x & "'")
    isProcessExists = (find.Count <> 0)
End Function
追问
(写了一堆敬语,字符超出限制了... ...)

第二个流程图多了一个将自己的pid写入到x:\x\xx.txt,因为需要另一个相对监视的进程,就是您说的“相互守护”,所以要将自己的pid写入到一个文件
还有就是不知道您知不知道ScriptCryptor这个软件,它在编译的时候可以把vbs转换为不需要wscript.exe的程序,不知道还能不能实现准确将自己的pid写入到一个文件
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式