返回顶部
首页 > 资讯 > 精选 >vbs中如何启动两个应用程序
  • 677
分享到

vbs中如何启动两个应用程序

2023-06-08 13:06:52 677人浏览 独家记忆
摘要

这篇文章主要介绍vbs中如何启动两个应用程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!问: 我想要用一个脚本启动两个可执行文件。第一个应用程序关闭后,我想让这个脚本关闭第二个应用程序,然后退出。如何完成上述任务?

这篇文章主要介绍vbs中如何启动两个应用程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

问:
我想要用一个脚本启动两个可执行文件。第一个应用程序关闭后,我想让这个脚本关闭第二个应用程序,然后退出。如何完成上述任务?
答:
您知道,这是我们喜欢的那种类型的问题。为什么?因为它听起来确实很复杂很棘手。如果有人想找我们做什么事,我们就可以说“您知道,我正在尝试编写这样一个脚本:它能够启动两个应用程序,等到第一个关闭后,然后自动关闭第二个。”然后他们肯定会说“噢,很抱歉。很显然,你们很忙”,然后就不找我们了。

当然,他们不知道,这只是听起来很困难。其实,它的难度也就相当于下面这个脚本而已:

复制代码 代码如下:


strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process") 

errResult = objWMIService.Create("calc.exe", null, null, intCalcID) 
errResult = objWMIService.Create("notepad.exe", null, null, intNotepadID) 

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

Set colProcesses = objWMIService.ExecNotificationQuery _ 
    ("Select * From __InstanceDeletionEvent " _  
            & "Within 1 Where TargetInstance ISA 'Win32_Process'") 

Do Until i = 999 
    Set objProcess = colProcesses.NextEvent 
    If objProcess.TargetInstance.ProcessID = intCalcID Then 
        Exit Do 
    End If 
Loop 

Set colProcesses = objWMIService.ExecQuery _ 
    ("Select * from Win32_Process Where ProcessID = " & intNotepadID) 

For Each objProcess in colProcesses 
    objProcess.Terminate() 
Next 


真的,请相信我们:您了解了脚本所完成的工作后,这其实就变得相当简单了。我们首先连接到计算机上的 WMI 服务,具体地说,绑定到 Win32_Process 类。这就是我们现在要做的:

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")

然后,我们使用 Create 方法创建两个新进程:Calc.exe 和 Notepad.exe。对于每个新进程,我们使用与下面这行代码类似的代码:

errResult = objWMIService.Create("calc.exe", null, null, intCalcID)

我们剩下要做的只是调用跟有下列内容的 Create 方法:

• 可执行文件的名称(可能需要指定应用程序的完全路径名称,视您的计算机的设置而定)。

• 一对 Null 参数。使用这两个参数,我们可以为应用程序指定不同的工作文件夹和配置某些其他启动选项。在本示例代码中,我们不需要考虑这些事情,因此我们只是将参数值设置为 Null。

• 起“输出参数”作用的变量(名称为 intCalcID)。创建这些进程后,分配给进程的 ProcessID 号也分配给这些输出参数变量。


最终结果是我们启动“计算器”,并且变量 intCalcID 中包含分配给“计算器”实例的进程 ID。然后,我们启动“记事本”,并且变量 intNotepadID 中包含分配给“记事本”实例的 ProcessID。这就是启动两个应用程序并且跟踪它们的方法。

下一步我们要做的是,嗯,基本没什么了:我们要此脚本暂停,直到关闭“计算器”。要完成此任务,我们重新连接到 WMI 服务,然后使用 ExecNotificationQuery 监视任何删除的进程。我们需要重新连接到 WMI 服务是因为在脚本的开始我们只是连接到 Win32_Process 类;因此,对象引用 (objWMIService) 只是引用此类。我们需要连接到“通用”WMI 服务,所以我们只是重新使用对象引用 objWMIService 并进行新连接:

Set colProcesses = objWMIService.ExecNotificationQuery _
    ("Select * From __InstanceDeletionEvent " _ 
            & "Within 1 Where TargetInstance ISA 'Win32_Process'")

这么做的原因何在?每次删除一个进程,都要生成一个 __InstanceDeletionEvent 类实例。我们要检查每个实例,看这些实例的进程 ID 是否为目标 ID,也就是分配给 intCalcID 的 ID。如果删除的进程具有不同的 ID,则它不是“计算器”实例;在这种情况下,脚本将恢复监视。如果删除的进程具有与 intCalcID 相同的 ID,则它一定是“计算器”实例(因为进程 ID 必须是唯一的)。在这种情况下,我们要停止监视,然后关闭“记事本”。

下面是实际执行监视的代码:

Do Until i = 999
    Set objProcess = colProcesses.NextEvent
    If objProcess.TargetInstance.ProcessID = intCalcID Then
        Exit Do
    End If
Loop

这里我们做的是设置一个循环,该循环一直运行到变量 i 等于 999。现在,事实是变量 i 将始终不等于 999;这只是个小技巧,确保循环一直运行到“计算器”关闭。(我们如何知道变量 i 将始终不等于 999?是这样,我们没有为 i 赋值;因此,它取默认值 0。因为我们从未对该值进行任何更改,所以 i 始终为 0,因此将始终不等于 999。)

在循环中,我们使用此行代码等待下一个删除的进程:

Set objProcess = colProcesses.NextEvent

每次删除进程我们都检查 ProcessID 与分配给“计算器”的进程 ID 是否相符。如果相符,我们则使用 Exit Do 命令断开循环,继续脚本。如果不具有相同的 ID,则我们只需继续循环,等待下一个删除的进程。(正如我们上面所说的,i 将始终不等于 999,但是没关系:使用 Exit Do 命令就可以脱离循环。)

注意。我们发现,我们有点草草掠过事件监视的整个思路。如果您对诸如 __InstanceDeletionEvent 和 colProcesses.NextEvent 的内容有点糊涂,请参阅脚本专家网络广播防患于未然:WMI 事件简介(英文)。


现在,我们只需要终止我们启动的“记事本”实例。要完成此任务,我们使用此 WMI 查询检索具有分配给“记事本”的进程 ID 的所有进程的集合

Set colProcesses = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where ProcessID = " & intNotepadID)

获得此集合后,我们使用此代码块在整个进程集(只有一个进程)中循环,然后使用 Terminate 方法关闭应用程序:

For Each objProcess in colProcesses
    objProcess.Terminate()
Next

顺便说一句,此方法既适用于远程计算机也适用本地计算机;只需将变量 strComputer 的值更改为远程计算机的名称。但是,要记住,在 windows XP 和 Windows Server 2003 中,在远程计算机上启动的进程是在不可见的窗口中运行的;它们在屏幕上不可见。这意味着,处理远程计算机时,对于不需要任何用户交互的应用程序,此方法很有用;而对于确实需要用户干预的应用程序,此方法远不及其他方法有用(实际上完全没用)。

以上是“vbs中如何启动两个应用程序”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: vbs中如何启动两个应用程序

本文链接: https://lsjlt.com/news/254203.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vbs中如何启动两个应用程序
    这篇文章主要介绍vbs中如何启动两个应用程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!问: 我想要用一个脚本启动两个可执行文件。第一个应用程序关闭后,我想让这个脚本关闭第二个应用程序,然后退出。如何完成上述任务?...
    99+
    2023-06-08
  • Android开发中如何实现在一个程序中启动另一个程序
    Android开发中如何实现在一个程序中启动另一个程序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Android 开发有时需要在一个应用中启动另一个应用,比如...
    99+
    2023-05-31
    android roi
  • vbs如何自动安装驱动程序
    这篇文章给大家分享的是有关vbs如何自动安装驱动程序的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。其实,很简单,只要将这些驱动程序的inf文件所在的文件夹注册到注册表中。比如: 我们把自己电脑上的驱动程序,通过&...
    99+
    2023-06-08
  • mongodb应用程序无法启动如何解决
    如果你的MongoDB应用程序无法启动,有几个常见的问题和解决方法:1. 检查MongoDB服务是否正在运行:在终端或命令提示符中,...
    99+
    2023-09-04
    mongodb
  • python启动应用程序和终止应用程序
    1. 目的 每天上班,工作需要,电脑上需要每天开机启动一些软件,下班时候,需要关掉一些软件。一个一个打开和关闭貌似是很繁琐的,于是乎,这个脚本产生了。 2. 环境 系统环境: - win7-32位 - python 2.7...
    99+
    2023-01-31
    应用程序 python
  • Android开发中如何实现一个应用程序开机自启动功能
    今天就跟大家聊聊有关Android开发中如何实现一个应用程序开机自启动功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Android在开机时自动启动一个应用程序在启动时自动启动一个...
    99+
    2023-05-31
    android roi
  • 如何在 Docker 容器中自动重启 golang 应用程序?
    小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《如何在 Docker 容器中自动重启 golang 应用程序?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章...
    99+
    2024-04-04
  • Apache和NumPy:如何在Java应用程序中使用这两个工具?
    Apache和NumPy都是非常流行的开源工具,分别用于Java和Python的数学计算和数据处理。这两个工具都非常有用,可以帮助开发人员更轻松地完成各种任务。但是,如果您需要在Java应用程序中使用NumPy,您将需要一些额外的工作。在...
    99+
    2023-11-14
    apache numy load
  • java无法启动该应用程序如何解决
    有几种可能的解决方法可以尝试:1. 检查Java安装:确保已正确安装Java并且JAVA_HOME环境变量已设置。您可以在命令行中运...
    99+
    2023-09-22
    java
  • Flex应用程序怎么启动
    这篇文章主要介绍了Flex应用程序怎么启动,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex应用程序启动编写一个简单的Flex应用程序并不复杂,就算你从来没接触过Flex...
    99+
    2023-06-17
  • windows10应用程序无法正常启动如何解决
    以下是一些可能的解决方案,以解决Windows 10应用程序无法正常启动的问题:1. 重新启动电脑:有时,只需重新启动计算机即可解决...
    99+
    2023-09-15
    windows10
  • win7应用程序无法正常启动如何解决
    要解决Win7应用程序无法正常启动的问题,可以尝试以下方法:1. 重新启动计算机:有时候,计算机只需要简单的重新启动就可以解决问题。...
    99+
    2023-08-22
    win7
  • 如何使用iisext.vbs启用应用程序
    这篇文章主要介绍“如何使用iisext.vbs启用应用程序”,在日常操作中,相信很多人在如何使用iisext.vbs启用应用程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用iisext.vbs启用应...
    99+
    2023-06-08
  • win10启动有两个系统如何关闭
    如果您的电脑上安装了两个操作系统,您可以按照以下步骤关闭其中一个系统并使其不再显示在启动菜单中: 打开“开始”菜单,并搜索“运行”...
    99+
    2024-02-29
    win10
  • 如何实现一个恶作剧vbs程序
    小编给大家分享一下如何实现一个恶作剧vbs程序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!操作方法:把代码保存为*.VBS运行即可 经本人亲自测试 不会出大问题...
    99+
    2023-06-08
  • windows应用程序无法启动0xc0000007如何解决
    本篇内容主要讲解“windows应用程序无法启动0xc0000007如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows应用程序无法启动0xc0000007如...
    99+
    2023-07-01
  • 如何使用Systemd和Crontab在Linux系统中自动重启应用程序
    要使用Systemd和Crontab在Linux系统中自动重启应用程序,你可以按照以下步骤进行操作:1. 创建一个Systemd服务...
    99+
    2023-10-09
    Linux
  • 怎么使用vbs脚本添加程序到自启动项
    这篇文章给大家分享的是有关怎么使用vbs脚本添加程序到自启动项的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。因编辑器过滤了一些字符,比如&,所以下面的脚本可能会运行错误。。看官添加&&这个...
    99+
    2023-06-08
  • android如何完全重启应用程序
    要完全重启Android应用程序,可以使用以下几种方法:1. 使用设备的“最近应用程序”功能关闭应用程序,然后重新打开它。在大多数设...
    99+
    2023-09-16
    android
  • android – 如何完全重启应用程序
    要完全重启Android应用程序,您可以使用以下代码:```javaIntent intent = getBaseContext()...
    99+
    2023-09-17
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作