vbs中实现启动两个应用程序,一直等到其中一个程序结束,然后关闭另一个?
作者 佚名
来源 ASP编程
浏览
发布时间 2013-07-09
D的ID。如果删除的进程具有不同的ID,则它不是“计算器”实例;在这种情况下,脚本将恢复监视。如果删除的进程具有与intCalcID相同的ID,则它一定是“计算器”实例(因为进程ID必须是唯一的)。在这种情况下,我们要停止监视,然后关闭“记事本”。 下面是实际执行监视的代码: DoUntili=999 SetobjProcess=colProcesses.NextEvent IfobjProcess.TargetInstance.ProcessID=intCalcIDThen ExitDo EndIf Loop 这里我们做的是设置一个循环,该循环一直运行到变量i等于999。现在,事实是变量i将始终不等于999;这只是个小技巧,确保循环一直运行到“计算器”关闭。(我们如何知道变量i将始终不等于999?是这样,我们没有为i赋值;因此,它取默认值0。因为我们从未对该值进行任何更改,所以i始终为0,因此将始终不等于999。) 在循环中,我们使用此行代码等待下一个删除的进程: SetobjProcess=colProcesses.NextEvent 每次删除进程我们都检查ProcessID与分配给“计算器”的进程ID是否相符。如果相符,我们则使用ExitDo命令断开循环,继续脚本。如果不具有相同的ID,则我们只需继续循环,等待下一个删除的进程。(正如我们上面所说的,i将始终不等于999,但是没关系:使用ExitDo命令就可以脱离循环。) 注意。我们发现,我们有点草草掠过事件监视的整个思路。如果您对诸如__InstanceDeletionEvent和colProcesses.NextEvent的内容有点糊涂,请参阅脚本专家网络广播防患于未然:WMI事件简介(英文)。 现在,我们只需要终止我们启动的“记事本”实例。要完成此任务,我们使用此WMI查询检索具有分配给“记事本”的进程ID的所有进程的集合: SetcolProcesses=objWMIService.ExecQuery_ ("Select*fromWin32_ProcessWhereProcessID="&intNotepadID) 获得此集合后,我们使用此代码块在整个进程集(只有一个进程)中循环,然后使用Terminate方法关闭应用程序: ForEachobjProcessincolProcesses objProcess.Terminate() Next 顺便说一句,此方法既适用于远程计算机也适用本地计算机;只需将变量strComputer的值更改为远程计算机的名称。但是,要记住,在WindowsXP和WindowsServer2003中,在远程计算机上启动的进程是在不可见的窗口中运行的;它们在屏幕上不可见。这意味着,处理远程计算机时,对于不需要任何用户交互的应用程序,此方法很有用;而对于确实需要用户干预的应用程序,此方法远不及其他方法有用(实际上完全没用)。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: VBS编程教程第一部下一篇: 一个把任何文件转成批处理的vbs脚本Any2Bat.vbs
关于vbs中实现启动两个应用程序,一直等到其中一个程序结束,然后关闭另一个?的所有评论