首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

确定带外壳的进程何时在VBA中结束

在VBA中,确定带外壳的进程何时结束可以通过以下步骤实现:

  1. 首先,需要使用Shell函数在VBA中启动一个外壳进程。Shell函数用于在操作系统中运行一个可执行文件,并返回一个代表该进程的唯一标识符。
  2. 接下来,可以使用WMI(Windows Management Instrumentation)来监视进程的状态。WMI是一种用于管理和监视Windows操作系统的技术,可以通过VBA代码与WMI进行交互。
  3. 使用WMI查询语言(WQL)编写一个查询,以获取正在运行的进程列表。可以通过查询进程的名称或进程ID来筛选结果。
  4. 对于每个正在运行的进程,可以检查其状态以确定是否已结束。进程的状态可以通过WMI提供的Win32_Process类中的Status属性获取。
  5. 如果进程的状态为“终止”,则表示该进程已结束。可以根据需要执行后续操作,例如关闭相关的资源或执行其他任务。

需要注意的是,VBA本身并不直接支持云计算相关的功能,但可以通过调用操作系统的API或使用第三方库来实现与云计算相关的功能。在云计算领域,可以使用VBA来编写自动化脚本、数据处理脚本等,以提高工作效率和准确性。

对于VBA中确定带外壳的进程何时结束的问题,以下是一个示例代码:

代码语言:txt
复制
Sub CheckProcessStatus()
    Dim objWMIService As Object
    Dim colProcesses As Object
    Dim objProcess As Object
    Dim strQuery As String
    Dim strProcessName As String
    Dim strShellCommand As String
    
    ' 设置要监视的进程名称和启动命令
    strProcessName = "notepad.exe"
    strShellCommand = "notepad.exe"
    
    ' 启动外壳进程
    Shell strShellCommand, vbNormalFocus
    
    ' 连接到WMI服务
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    
    ' 构造查询语句
    strQuery = "SELECT * FROM Win32_Process WHERE Name='" & strProcessName & "'"
    
    ' 执行查询
    Set colProcesses = objWMIService.ExecQuery(strQuery)
    
    ' 循环检查进程状态
    For Each objProcess In colProcesses
        If objProcess.Status = "Terminated" Then
            ' 进程已结束
            MsgBox "进程已结束"
            ' 可以在此处执行后续操作
        Else
            ' 进程仍在运行
            MsgBox "进程仍在运行"
        End If
    Next objProcess
End Sub

在上述示例代码中,我们使用Shell函数启动了一个外壳进程(notepad.exe),然后使用WMI查询该进程的状态。如果进程的状态为"Terminated",则表示进程已结束,可以在代码中执行后续操作。否则,表示进程仍在运行。

对于VBA中的云计算相关名词和概念,可以参考腾讯云的文档和产品介绍,例如腾讯云的云服务器(https://cloud.tencent.com/product/cvm)和云数据库(https://cloud.tencent.com/product/cdb)等产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

11.反恶意软件扫描接口 (AMSI)

这样,就可以决定继续执行之前安全地确定脚本是否是恶意。 即使脚本是在运行时生成,也是如此。脚本(恶意或其他)可能会经过多次去混淆。但您最终需要为脚本引擎提供简单、未混淆代码。...Office VBA + AMSI 当然amsi也可以检测vba和Java script 实战,使用宏攻击(钓鱼)也是我们常用手法,所以我们要知道amsi对宏文件检测流程 微软文档我们可以看到...通过阅读理解微软文档我们可以知道amsi对宏检测查杀流程: 1.word等等钓鱼文件加载宏 2.VBA宏运行时,运行时会有一个循环缓冲区记录数据和参数调用Win32,COM, VBA等等api情况...涵盖攻击链各个阶段操作(例如,有效载荷下载、持久性、执行等都会检测高风险函数或触发器列表,并根据它们恶意和良性宏普遍性进行选择。...该协议允许 VBA 运行时向反病毒系统报告它即将执行某些高风险代码行为,并允许反病毒观察到行为序列表明可能存在恶意活动时向进程报告,以便 Office应用程序可以采取适当行动。

4.3K20

Excel VBA编程问答33题,继续……

excelperfect 下面是一些关于控件、事件和类基础问题,试试看,你能不能回答出来。 1.控件Exit事件何时发生? 2.VBA程序如何修改双击间隔?...3.是非题:KeyDown事件过程可以使用KeyCode参数判断用户输入是4还是$。 4.KeyDown事件过程代码如何取消按键? 5.在用户窗体上对齐控件最快方法是什么?...16.是非题:保护工作簿密码可防止用户查看你VBA代码。 17.是非题:一个bug阻止程序运行。 18.程序何时应该使用OptionExplicit语句? 19.什么是断点?...21.当程序断点处暂停时,确定程序变量当前值最快方法是什么? 22.是非题:监视窗口中程序运行时会不断更新。 23.VBA如何将bugs报告给程序员?...31.类方法与常规VBA过程有何不同? 32.什么是辅助方法? 33.销毁对象之前触发了什么事件? 如果有兴趣,可以留言中写下你答案。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

1.9K30
  • 答案:Excel VBA编程问答33题,继续……

    excelperfect 下面是一些关于控件、事件和类基础问题回答,你答案是不是一样? 1.控件Exit事件何时发生? 控件失去焦点之前。 2.VBA程序如何修改双击间隔? 不能。...16.是非题:保护工作簿密码可防止用户查看你VBA代码。 错误。必须使用“项目工程属性”对话框“保护”选项卡,将VBA工程与设置给工作簿任何密码分开锁定。...“逐过程”执行过程所有代码,并在执行退出过程时暂停。无论代码位于何处,“逐语句”都会执行下一行代码,然后暂停。 21.当程序断点处暂停时,确定程序变量当前值最快方法是什么?...25.自定义VBA代码放在哪里? 一个类模块。 26.是非题:自定义VBA类可以包含可视化界面。 错。自定义VBA类不能包含视觉化元素。 27.如何创建只读属性?...31.类方法与常规VBA过程有何不同? 除了类模块之外,没有什么不同。 32.什么是辅助方法? 仅应从类内部而不是类外部代码调用方法。 33.销毁对象之前触发了什么事件?

    4.2K20

    Excel编程周末速成班第24课:调试和发布应用程序

    VBA调试工具旨在跟踪这两种bugs原因。 断点 VBA编辑器,可以在任何代码行上设置断点。当执行到达该行代码时,VBA进入中断模式,这使你可以执行各种调试任务(稍后将对此进行解释)。...如果你认为已找到该bug并希望更正代码以对其进行修复,使用“重新设置”结束该程序。 中断模式下代码编辑 VBA使你可以中断模式下修改代码。当你认为已发现问题并希望立即解决该问题时,此功能很有用。...然而,进行一些编辑后,VBA无法从暂停位置继续执行,必须重置项目才能重新启动。在这种情况下,VBA将显示一个警告对话框。 使用监视 监视使你能够执行期间确定程序变量值。...检查变量最简单方法是中断模式下。只需将鼠标指针停留在代码变量名称上,VBA就会弹出一个带有当前值小窗口。如果这还不够,VBA提供了更复杂监视工具。...VBA可以程序调试期间监视任何变量或表达式值。监视表达式可以是任何VBA表达式,例如程序变量、对象属性或函数调用。通过设置监视,你可以关注变量或属性值以查看其是否以及何时更改。

    5.8K10

    进击恶意文档之 VBA 进阶之旅

    下面我就以威胁分析员角度来介绍几种技术 VBA stomping VBA Office 文档可以以下面三种形式存在 1、源代码: 宏模块原始源代码被压缩,并存储模块流末尾。...)来探究分析此类样本方法: 首先创建一个文档 ?...2007(x86) 8800 2010(x86) 9700 2013(x86) A300 2016(x86) AF00 VBA 编辑器隐藏宏 可以 VBA 编辑器隐藏真正宏,只需要修改 PROJECT... VBA 编辑器,NewMacros 已经消失了,宏正常执行 ?...”替换为“txt” 二、很多诱饵文档喜欢 VBA 启动脚本程序执行 ps 或者从网络上下载一段 shellcode 或恶意程序等等,这样非常容易被杀软行为拦截拦住,同时沙箱可以根据进程链和流量判定该

    4.5K30

    加载宏

    1、什么是加载宏 加载宏其实就是一个特殊一点ExcelVBA程序文件,最大特点就是不会显示出Excel表格界面,只有VBA编辑器里才能看到它工程属性并编辑它VBA代码。...一般都是将一些常用功能放在里面,方便自动打开后使用。 2、创建和使用 要创建加载宏非常简单,编辑一个正常VBA程序文件,然后另存为: ?...选择加载宏即可,选择另存位置后,生成文件后缀名就是.xlam文件。...使用时候,只要双击打开文件就可以了,但是如果要运行加载宏里程序,一般都要配合自定义加载菜单或者是Ribbon菜单,07版本之后一般都是使用Ribbon菜单,Ribbon菜单制作建议看ExcelHome...打开Excel加载项后,浏览找到加载宏文件所在位置,确定后就可以了,以后不管打开什么Excel文件都会自动打开这种加载宏,只要保证加载宏保存位置不要改变就可以。

    1.3K20

    Excel编程周末速成班第26课:处理运行时错误

    程序运行时发生程序错误称为运行时错误,重要是要理解运行时错误(或只是错误)与VBA程序可能发生其他两类问题之间区别: bug是程序逻辑缺陷,会导致程序产生不正确结果。...结束。此按钮终止程序。 调试。如果程序VBA编辑器运行,则可以使用此按钮暂停程序并突出显示发生错误代码行。但是,如果工程使用密码锁定(由于几乎总是锁定分发应用程序),则“调试”选项将不可用。...提示:错误处理对于所有VBA过程(包括函数和类方法)都以相同方式工作。 Err对象 Err对象是VBA不可或缺一部分,总是可用于你程序。任何时候,Err对象都包含有关最近发生错误信息。...任何后续错误(该过程)都将被忽略,有关该错误信息将放置Err对象。你代码可以使用此信息来确定是否发生错误,以及发生错误采取操作。...无法准确定义属于此类别的错误,严重错误必须在一个程序捕获,而在另一个程序可能会被接受。同样,程序员有责任熟悉可能发生错误,以及它们如何与特定程序相关联。

    6.7K30

    Office如何快速进行宏免杀

    宏是 Office 自带一种高级脚本特性,通过 VBA 代码, 可以 Office 中去完成某项特定任务,而不必再重复相同动作,目的是让用户文档 一些任务自动化。...Visual Basic for Applications(VBA)是 Visual Basic 一种宏语言,是微软开发出来 其桌面应用程序执行通用自动化(OLE)任务编程语言。...把这两个下载回来即可 使用方法: EvilClippy.exe -s hello.vba diaoyu.doc 参数说明:-s 参数是通过假 vba 代码插入到模块,用以混淆杀毒程序,这里我们需要写一个正常...VirtualAllocEx 指定进程虚拟空间保留或提交内存区域 WriteProcessMemory 写入某一进程内存区域 CreateProcess 创建一个新进程和它主线程,这个新进程运行指定可执行文件...ShellCode 可以自己 VBA 里解码或者比如每个元素自增 1,运行时候-1,达到免 杀 ……

    4.3K30

    干货 | Office文档钓鱼之如何快速进行宏免杀

    宏是 Office 自带一种高级脚本特性,通过 VBA 代码, 可以 Office 中去完成某项特定任务,而不必再重复相同动作,目的是让用户文档 一些任务自动化。...Visual Basic for Applications(VBA)是 Visual Basic 一种宏语言,是微软开发出来 其桌面应用程序执行通用自动化(OLE)任务编程语言。.../releases 把这两个下载回来即可 使用方法: EvilClippy.exe -s hello.vba diaoyu.doc 参数说明:-s 参数是通过假 vba 代码插入到模块,用以混淆杀毒程序...VirtualAllocEx 指定进程虚拟空间保留或提交内存区域 WriteProcessMemory 写入某一进程内存区域 CreateProcess 创建一个新进程和它主线程,这个新进程运行指定可执行文件...ShellCode 可以自己 VBA 里解码或者比如每个元素自增 1,运行时候-1,达到免 杀 ……

    2.6K20

    最佳编码实践:搞砸代码10种方法

    ,但正如作者所说,“虽然其中一部分只适用于VBA或某种IDE,但大多数都是通用”,希望大家触类旁通,将这些方法实践到自己开发工作。   ...1、我不需要else子句   If…then…else,select case等VBA语句都包含了else子句,这个子句后跟随了所有具体决策条件,这是处理一些条件事情最好机会,但开发人员却忽略了这个机会...3、编译器是浪费时间   和其它编译器不同,VBA编译器不会生成一个可以脱离Office独立执行模块,相反,VBA编译器实际上是一个语法检查器,真实运行之前,编译你代码是捕捉语法错误简单有效方法...6、认为前缀或标签命名约定不好   你创建一个变量时,能通过数据类型和用途识别它是最好,大多数VBA开发人员喜欢添加3个字符前缀,或标签来确定数据类型,例如,用于存储姓氏字符串数据类型可能命名为...strLastName,前缀确定了变量数据类型,LastName确定了变量用途,有些开发人员认为这个前缀是没有必要,甚至会造成干扰,因此他们不使用前缀,某些情况下,数据类型的确是显而易见,但有时却不那么明显

    2.1K40

    Python替代Excel Vba系列(终):vba调用Python

    ---- ---- 最后,定义一个方法,让 vba 调用。如下图: 这个方法上方套上一个 xlwings 装饰器 @xw.func。表示这个方法需要注册到 Vba 模块。...执行以下语句,即会生成一个 py 文件和一个 excel 文件。...---- 打开 myproject.xlsm 文件,你会看到一个叫 xlwings 功能区页。如下图: 点一下上图红框部分,即可注册你 py 文件自定义方法到 vba 。...他大致原理是读取 py 文件方法,然后相应在 vba 中生成名字和参数一样 vba 方法。 因此,假如你 py 文件方法定义改动了,记得要在这里点击一下,重新导入定义。...而本文做法,可以让其 Python 进程一直存在。 总结 使用 xlwings 可以让 Vba 调用 Python 。 把复杂汇总处理流程让给 Python 处理。

    5.3K30

    VBA实战技巧05: 动态调整数组以存储所需数据

    i + 1 Next rng End Sub 方法2:随时调整数组大小 VBA调整数组大小时,会清除掉原先存储数据。...如果调整数组大小同时,想要保留之前存储在数组数据,则需要使用Preserve关键字,告诉VBA增加数组存储容量时,保留原来存储在数组数据。...Set rngData =ActiveSheet.Range("C1:C100") '遍历单元格区域并以指定分隔符连接数值 '并将其存储字符串 For Each...myString, Len(myString) - 3) '使用Split函数创建数组 MyArray = Split(myString, ";|;") End Sub 如果已经有一个分隔符字符串...Dim MyArray() As Variant '创建数组 MyArray = Range("A1:D3") End Sub 方法5:从表中提取数据直接创建数组 这个方法数据变化时

    3.6K20

    《Linux命令行与shell脚本编程大全》第十六章 控制脚本

    1.中断进程 Ctrl+c会生成SIGINT信号。会发送给当前shell运行所有进程。 2.暂停进程 进程运行时暂停进程,无需终止它。让程序继续保留在内存,并能从上次停止位置继续运行。.../test & 显示第一行是shell分配给后台进程作业号[]里面的。后面那个是进程PID。 后台进程结束时,会在终端显示一条消息表明已经结束了。...16.3 非控制台下运行脚本 需求:终端启动脚本,让脚本一直运行到结束,即使退出了终端会话。 nohup命令可以做到。它运行了另外一个命令来阻断所有发送给该进程SIGHUP信号。...加号+:当做默认作业(被当成作业控制命令操作对象) 默认作业完成后,执行下一个作业(减号-)。任何时候都只有一个加号和一个减号作业。 还可以这样: 用kill杀死当前默认作业。...方法:at命令和cron表 16.6.1 用at命令来计划执行作业 at命令会将作业提交到队列,指定shell何时运行该作业。at守护进程atd会以后台模式运行,检查作业队列来运行作业。

    3K61

    常见复制粘贴,VBA是怎么做

    例如,本文包含VBA代码示例,源数据所在单元格区域引用如下所示: Worksheets(“Sample Data”).Range(“B5:M107”) 这个引用不是完全限定对象引用。...Excel功能区复制命令 使用VBA代码复制单元格区域之前,看看Excel功能区“复制”按钮命令。...Excel手工复制单元格区域操作时,使用Ctrl+C快捷键,该单元格区域被复制到剪贴板。VBA,使用Range.Copy方法做同样事情。...何时复制到剪贴板,何时使用Destination参数 如果可以不复制到剪贴板情况下实现目的,那么简单地使用Range.CopyDestination参数即可。...为了确定Destination参数何时允许你达到所需目的,了解Range.Copy方法是如何工作非常重要,特别是它可以(和不能)做事情。

    11.7K20

    二 详解VBA编程是什么

    * VBA一个关键特征是你所学知识微软一些产品可以相互转化. * VBA可以称作EXCEL”遥控器”. VBA 究竟是什么?...EXCEL环境基于应用程序自动化优点 也许你想知道VBA可以干什么?使用VBA可以实现功能包括: 1. 使重复任务自动化. 2. 自定义EXCEL工具栏,菜单和界面. 3....4、输入”改变颜色”作为宏名替换默认宏名,单击确定,注意,此时状态栏显示”录制”,特别是”停止录制”工具栏也显示出来。替换默认宏名主要是便于分别这些宏。...其中可用字符包括:字母、数字和下划线。宏名不允许出现空格。通常用下划线代表空格。 5、选择”格式””单元格”,选择”图案”选项红色,单击”确定”。...End With:结束With 语句。 End Sub:整个宏结束语 编辑录制代码 在上一节,我们录制了一个宏并查看了代码,代码中有两句实际上并不起作用。哪两句?

    5.7K20

    一起学Excel专业开发02:专家眼中Excel及其用户

    工作表:用于展示 日常工作,我们会很自然地工作表单元格输入数据,进行数据分析和处理,制作报表输出,这是我们通常做法。Excel丰富内置功能,已让我们这种做法非常容易。...工作表:用于程序数据存储 程序代码程序代码处理,经常要用到一些数据,而工作表就是一个天然数据存放地,我们可以工作表单元格存放数字、文本、表格或图片,供程序使用,而VBA程序代码可以方便地访问这些数据...Excel提供VBA语言专业编辑器(VBE),不仅可以使用VBA来充分Excel发挥更大优势和威力,而且可以利用用户窗体设计专业交互界面,扩展Excel能力。...2.Excel高级用户:熟悉Excel各种功能,知道何种情况下使用何种功能,能够根据需要创建复杂工作表,能够解决工作表使用过程遇到问题,会使用VBA但并不专业。...判断何时使用Excel解决问题,何时使用VBA解决问题,以及何时将两者结合来解决问题时,缺乏经验。

    4.3K20

    数据地图系列10|excel(VBA)数据地图透明度填充法

    今天要跟大家分享数据地图系列第10篇——excel(VBA)数据地图透明度填充法。 这种方法制作步骤难度与前一篇相比都较低,但是涉及到VBA代码却要比前一篇略复杂一点。...,可以直接拿案例已经命名好矢量图形尝试着去做。...将选好主色填充到指定单元格。...6、开发工具插入一个按钮,并制定宏代码(命名为填色)。 ? 然后点击一下填色按钮,看下神奇效果吧~ ? ? ? ?...最后将插入矩形(作为地图图例)放在数据地图合适位置,使用照相机快照功能将整个数据地图牌照引用。 保存时候仍然要保存为xlsm格式宏文件。

    3.4K60

    “为了看星星,我自己做了一个行星观测器”

    树莓派 3B ×1 16×2 LCD 屏幕 ×1 驱动器步进电机 (28-BYJ48) ×2 按钮 ×3 法兰联轴器 5mm ×2 按钮指南针 ×1 M3 螺栓/螺母 ×8 3D 打印外壳 ×1 3D...其中 id 表示是 JPL数据与火星数据,epochs表示获取数据时间,id_type表示询问太阳系主体。“000”格林威治天文台位置代码中表示英国位置。...启动 因为想把它独立运行,而不是每次手动代码寻找行星,因此把观测器设置为树莓派开启时运行代码。终端输入。 crontab -e 在打开文件文件末尾,另起一行输入。...说明:代码末尾&是允许代码在后台运行,因此它在启动时不会阻止其他进程。 完成组装 ? ? 将小指南针添加到旋转底座中间,最后,将所有的组件安装到位! 使用方法 ?...现在,我们可以使用向上、向下按钮选择行星,确定好后按下OK按钮即可。它将显示选定行星高度和方位角,指向它几秒后再转向北。 到现在,项目就算全部完成了。 赶紧去找找你心中那颗行星吧! ?

    1.3K30

    黑客最常用两个重要PowerShell命令

    Windows PowerShell是一种命令行外壳程序和脚本环境,它内置每个受支持Windows版本(Windows 7、Windows 2008 R2和更高版本)。...本例,假设我们目标计算机执行了恶意程序“Calculator”,需要查看Calculator进程是否正在运行,最后还需要结束进程。...通过查看命令列表,确定Get-Process命令就是查看进程信息命令,如图所示。 第二步:通过Get-Help命令查看如何使用Stop-Process命令,如图所示。...第四步:通过Get-Command命令查找能够“结束进程命令。命令如下: 方法同第一步,进而确定Stop-Process就是结束进程命令,如图所示。...先使用Stop-Process命令结束进程,再使用Get-Process命令确定进程是否终结,如图所示。

    24610
    领券