VB Shell调用后等待程序运行结束



在VB(Visual Basic)编程中,`Shell`函数是一个非常常用的方法,用于在操作系统命令行环境中启动外部应用程序或命令。然而,当你使用`Shell`函数启动一个程序后,VB并不会自动等待这个程序运行结束,而是立即返回并继续执行后续代码。这可能会导致一些问题,比如你可能希望在外部程序完成其任务后再执行其他操作。为了实现这个需求,我们需要掌握如何让VB等待`Shell`调用的程序运行结束。 让我们深入理解`Shell`函数的基本用法。`Shell`函数的语法如下: ```vb Public Declare Function Shell Lib "kernel32" Alias "CreateProcessA" _ (ByVal lpApplicationName As String, ByVal lpCommandLine As String, _ ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _ ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _ ByVal lpEnvironment As Any, ByVal lpCurrentDirectory As String, _ ByRef lpStartupInfo As STARTUPINFO, ByRef lpProcessInformation As PROCESS_INFORMATION) As Long ``` 虽然这个声明看起来复杂,但在VB中我们通常简化为: ```vb Dim ProcID As Long ProcID = Shell("C:\Path\To\Your\Application.exe", vbNormalFocus) ``` 这里,`"C:\Path\To\Your\Application.exe"`是你要启动的程序路径,`vbNormalFocus`参数表示新启动的程序应获得焦点。 现在,我们要解决如何等待`Shell`启动的程序运行结束。VB本身没有内置的机制来直接实现这一点,但我们可以使用一些技巧。一种常见的方法是使用`Do While...Loop`结构配合`FindWindow`函数来检查程序是否还在运行。以下是一个示例: ```vb Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Dim ProcHandle As Long Dim ProcID As Long ' 启动程序 ProcID = Shell("C:\Path\To\Your\Application.exe", vbNormalFocus) ' 获取程序的窗口句柄 Do ProcHandle = FindWindow(vbNullString, "Your Program Title") ' 替换"Your Program Title"为你的程序窗口标题 DoEvents ' 允许VB处理其他事件 Loop Until ProcHandle <> 0 ' 循环直到找到窗口句柄,意味着程序已启动 ' 等待程序关闭 Do If ProcHandle = 0 Then Exit Do ' 如果窗口句柄为0,表示程序已关闭 DoEvents Loop ``` 这段代码首先使用`Shell`启动程序,然后通过`FindWindow`不断检查程序的窗口是否存在。当窗口存在时,循环会持续进行,直到程序关闭,窗口句柄变为0,循环才会结束。 注意,这种方法依赖于程序有一个可见的窗口。如果被启动的程序是无界面的后台进程,那么你可能需要使用其他方法,如`GetProcessById`函数或者创建一个线程来监控进程状态。 在你提供的文件列表中,`Form1.frm`和`工程1.vbp`、`工程1.vbw`是VB工程中的文件。`Form1.frm`包含了VB窗体的设计和相关代码,`工程1.vbp`是项目文件,保存了工程的配置信息,包括引用、窗体列表等,而`工程1.vbw`是工作区文件,记录了用户的工作环境,如窗体的大小和位置。这些文件可以结合使用,将上述等待程序运行结束的代码融入到你的VB项目中,以实现所需功能。
























- 1

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 三、施工总进度(包括施工进度计划横道图、网络图)及保证措施.docx
- 光纤通信试题计算分析题练习.docx
- 改性塑料项目管理投资计划书.doc
- 中国网络安全行业市场现状及发展前景分析-全年市场规模或将超1700亿元.docx
- 统计工作在大数据背景下的发展机遇研究.docx
- 环境监察档案信息化管理探究.docx
- 互联网+农村初中家校共育转型例谈.docx
- 物业管理顾问项目管理经理指导手册汇编.doc
- 基于Moodle的大学计算机基础课程的混合式学习设计与实践研究.docx
- 武汉理工大学《通信工程应用技术课程设计》报告.doc
- 大数据背景下金融统计发展策略探究.docx
- 网格工程项目管理难点及对策.docx
- 异构网络资源协同调度-洞察研究.pptx
- 应用型中职计算机应用基础教学的改革与实践.docx
- 网络安全课程设计.docx
- 智慧城市对档案馆档案信息化的影响分析.docx



- 1
- 2
前往页