VBA检查指定应用程序是否已经打开

news2024/12/28 1:57:51

VBA中提供了CreateObjectGetObject两种方法获得对象实例,二者的区别在于GetObject用于获取已经打开的应用程序对象,但是如果该应用程序并没有打开,那么将产生运行时错误,代码中需要加入额外的错误处理代码。

在任务管理器中可以轻松的查看当前已经打开的应用程序,如下图所示。

在这里插入图片描述

使用VBA也可以通过进程名称查找应用程序实例,示例代码如下。

Function blnCheckProcess(strProcess As String) As Boolean
    Dim objWMIService As Object
    Dim strSql As String
    Dim objProcessList As Object
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    strSql = Replace("select * from Win32_Process where Name='x' ", "x", strProcess)
    Set objProcessList = objWMIService.ExecQuery(strSql)
    blnCheckProcess = (objProcessList.Count > 0)
    Set objWMIService = Nothing
    Set objProcessList = Nothing
End Function
Sub Demo()
    Dim strProcess As String
    Dim strMsg As String
    strProcess = "winword.exe"
    If blnCheckProcess(strProcess) Then
        strMsg = strProcess & " 已经打开"
        ' 其他处理代码
    Else
        strMsg = strProcess & " 尚未打开"
    End If
    MsgBox strMsg
End Sub

【代码解析】
第5行代码调用GetObject过去WMI对象。
第6行代码创建用于查询Windows进程的sql语句,其中使用Replace替换语句中的进程名称。
第7行调用ExecQuery运行查询语句。
第8行代码将objProcessList.Count > 0设置为函数返回值,即如果objProcessList不为空,返回值为True,否则返回值为False。
第9~10行代码清空对象变量占用的系统资源。
第12~23行代码为演示代码过程。
第15行代码指定应用程序进程名称,不区分大小写,但是名称不一定和大家想象的相同,例如Office中的Word,其进程名称是winword.exe(参见插图1),于Excel相比,前面多了win
第16行代码调用blnCheckProcess查询进程。
第22行代码显示提示信息,如下图所示。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第17讲:Python中元组的概念以及应用

文章目录1.元组的概念2.元组的基本使用2.1.定义一个元组2.2.定义一个空元组2.3.元组的元素是不可变的2.4.当元组中的元素是一个列表时列表中的元素可变2.5.当元组中只定义一个元素时的注意事项3.列表的所有操作同样适用于元组4.就是想修改元组中的某个元素1.元组的概念 Python…

CVE-2022-33980 Apache Commons Configuration 远程命令执行漏洞分析

漏洞描述 7月6日,Apache官方发布安全公告,修复了一个存在于Apache Commons Configuration 组件的远程代码执行漏洞,漏洞编号:CVE-2022-33980,漏洞威胁等级:高危。恶意攻击者通过该漏洞,可在目标…

3. 其他数仓/BI架构解析

文章目录1. 独立数据集市架构2. 辐射状企业信息工厂Inmon架构范式建模维度建模3. 混合辐射状架构与Kimball架构目前,经过长时间的演进,各种数仓架构之间的区别变得越来越小,且不论哪种数仓架构,都会涉及维度建模。下面是几种常见的…

《项目管理精华》读书笔记

《项目管理精华》读后感 《项目管理精华》书中用实例讲解了项目管理的基本流程及一些项目管理技巧,通俗易懂且让人有读下去的欲望。本书按照项目管理的五大过程组的顺序逻辑加上一些作者认为项目管理中比较有价值的内容来介绍的,十大知识领域穿插在这些…

nodejs+vue+elementui在线水果商城购物网站vscode项目

摘 要 1 Abstract 1 1 系统概述 4 1.1 概述 4 1.2课题意义 4 1.3 主要内容 4 2 系统开发环境 5 2.1 Vue技术介绍 5 端技术:nodejsvueelementui 前端:HTML5,CSS3、JavaScript、VUE 系统分为不同的层次:视图层&#…

哪个室内导航地图好用?画地图用什么软件好?

在互联网服务中,所有互联网巨头均斥巨资布局C端的地图服务,喜闻乐见的地图形式极大地方便了人们在日常生活中的查询位置、了解环境、导航等应用需求,因此取得了巨大的成功。但目前这些地图服务数据的颗粒度基本仅到城市级;园区、景…

CVE-2022-32532 认证绕过漏洞分析

前言 结合自身经历,在使用正则表达式去匹配流量特征时,由于正则表达式中元字符“.”不匹配换行符(\n、\r)导致一直提取不上所需的流量。而如今,之前踩过的坑却出现在了Apache Shiro框架之中… 漏洞描述 6月29日&…

《MySQL实战45讲》——学习笔记24 “Master/Slave主备同步机制“

binlog可以用来归档,也可以用来做主备同步,binlog在MySQL的各种高可用方案上扮演了重要角色;本篇主要介绍MySQL主备(M-S结构)的基本原理、不同格式binlog的优缺点和设计者的思考、MySQL双主结构和循环复制问题&#xf…

关于 Linux 系统

个人主页:ζ小菜鸡 大家好我是ζ小菜鸡,小伙伴们,让我们一起来学习Linux系统。 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) 目录 一、Linux系统的组成 二、Linux 命令行的操作 三、Linux 目录结构 四、文件基本操作 五、用户及文件权限管…

jspssm小型药店药品管理系统

目 录 第一章 概述 1 1.1 研究背景 1 1.2开发意义 1 1.3 研究现状 1 1.4 研究内容 2 1.5论文结构 2 第二章 开发技术介绍 3 2.1 系统开发平台 3 2.2 平台开发相关技术 3 2.2.1 JSP技术介绍 3 2.2.2 Mysql数据库介绍 3 2.2.3 B/S架构 …

excel排名技巧:万能透视表加筛选找出销售冠军

在一组数据中统计单项排名第一的人员名单,如果用函数,我们需要考虑不同项目业绩相等的查找问题,需要考虑同项目业绩相等的查找问题。但如果用数据透视表加筛选,一切就很简单了。最后要么逐条地复制粘贴,要么用技巧合并…

ChatGPT 逆天测试,结局出乎预料

目录一、数学解题能力二、编程能力三、日常生活咨询四、问一些离谱的问题,它有啥反应?五、逆天大测试一、数学解题能力 据说 ChatGPT 会做数学题,给他几个条件不充分的问题,看看他是否真的会思考。 这家伙心理素质真好&#xff…

Uniswap 解析:恒定乘积做市商模型Constant Product Market Maker Model 的Vyper 实作

大纲 一. 前言 二. 恒定乘积做市商模型Constant Product Market Maker Model 1. 计入手续费 2. 程式码结构 3. 演算法核心与实作 4. 段落小结 三. 流动性Liquidity 1. 第一笔流动性注入、决定k值 2. 除了第一笔以外的情况 四. 结语 一. 前言 暨上一篇开始接触了Vyper 后&…

《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(2)-初识Fiddler让你理性认识一下

1.前言 今天的理性认识主要就是讲解和分享Fiddler的一些理论基础知识。其实这部分也没有什么,主要是给小伙伴或者童鞋们讲一些实际工作中的场景,然后隆重推出我们的猪脚(主角)-Fiddler。 1.1工作场景 做app测试,你是…

SpringMVC的工作原理

SpringMVC的工作原理图: SpringMVC流程 1、 用户发送请求至前端控制器DispatcherServlet。 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处…

二叉树29:二叉搜索树中的插入操作

主要是我自己刷题的一些记录过程。如果有错可以指出哦,大家一起进步。 转载代码随想录 原文链接: 代码随想录 leetcode链接:701.二叉搜索树中的插入操作 题目: 给定二叉搜索树(BST)的根节点 root 和要插入…

苏嵌实训——day19

文章目录一、数据库1.1 在ubuntu中安装数据库1.2 数据库的操作1.2.1 数据库命令的分类1.2.2 常用的系统命令1.2.3 数据中的常用的语句1.3 sqlite数据库中常用api1. sqlite3_open2. int sqlite3_close(sqlite3 * db)3. sqlite3_exec4 sqlite3_get_table5 void sqlite3_free_tabl…

JavaEE12-Spring MVC程序开发

目录 1.什么是Spring MVC? 1.1.MVC定义 1.1.1.Model(模型) 1.1.2.View(视图) 1.1.3.Controller(控制器) 1.2.MVC和Spring MVC的关系 2.为什么要学Spring MVC? 3.怎么学Spring MVC? 3.1.Spring …

LeetCode——2319. 判断矩阵是否是一个 X 矩阵

一、题目 如果一个正方形矩阵满足下述 全部 条件,则称之为一个 X 矩阵 : 矩阵对角线上的所有元素都 不是 0 矩阵中所有其他元素都是 0 给你一个大小为 n x n 的二维整数数组 grid ,表示一个正方形矩阵。如果 grid 是一个 X 矩阵 &#xff0c…

Linux的shell入门和版本控制(五)

0、前言 这部分简单介绍了Linux系统中的shell编程 1、服务监听 在Linux中的服务监听,相当于在windows中的任务管理器。常用指令: 示例一:查询进程 ps -aux|grep 要查询的程序名:这样查询会连带这条查询指令的进程一起查询出来。…