说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB判断一个32位程序是否结束

HTML文档下载 WORD文档下载 PDF文档下载
VB判断一个32位程序是否结束
作者:胡晓磊
Windows 3.1允许程序员用GetModuleUsage()函数来测试一个程序或模块是否仍在运行。但在Windows95及Windows NT下,每个程序都独立地运行在单独的环境中,因此就排除了测试过程的状态。

Microsoft 提供了少量的函数,如:WaitForSingleObject和 WaitForMultipleObjects 来完成该功能。尽管如此,这些函数并不是时时都有效。举例来说,如果你调用WaitForSingleObject函数监测Internet Explorer的运行,同时你又选择了“帮助”菜单中的“教程”项,结果将会是系统死锁,你不得不终止WaitForSingleObject函数的运行。造成这种结果的 原因是你点选了“教程”后,会返回给Internet Explorer一个地址,告诉浏览器转到下一个网址。这种情况通常发生在一个程序是由调用它的父程序中的一个过程或对象所启动,反过来却要等待父程序的结束。

本文的目的就是要解决这个问题。

Declare

Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredaccess&, ByVal bInherithandle&, ByVal dwProcessid&) As Long

Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpexitcode As Long) As Long

' Required Constants
Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400

Code

Sub ShellWait(cCommandLine As String)

Dim hShell As Long
Dim hProc As Long
Dim lExit As Long

hShell = Shell(cCommandLine, vbNormalFocus)

hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, hShell)

Do

GetExitCodeProcess hProc, lExit

DoEvents

Loop While lExit = STILL_ACTIVE

End Sub

调用 ShellWait,控制权将不会交给一个过程,直到调用该过程的程序结束

查看GetExitCodeProcess的用法
《近匠》GYENNO CEO任康:用“勺子”敲开一片新市场 Horde3D——基于C++编写的3D渲染引擎 Maker Faire 2015在深圳正式开幕,关注创客生态系统 Arduino与Seeed Studio达成战略合作——专访Arduino联合创始人Massimo Banzi 免费开源的Bootstrap富文本编辑器bootstrap-wysiwyg使用方法 CCAI2015:首届中国人工智能大会将于7月26-27日在京举行 拥抱互联网+ 用友NC6助力集团企业蜕变数据驱动型公司 《近匠》融云,自主研发真正“不丢消息”的IM云服务 【CTO讲堂】听云CTO Wood:APM实现原理及对IT和产品运营的价值 从7个维度浅析虚拟现实Alpha年 Maker Faire上的微软:将技术与工具带给Maker才是关键 友盟2015年Q1移动互联网报告:车联网App崛起 多面编程语言Scala NEC高可用集群软件EXPRESSCLUSTER X3.3面向中国市场正式发布 【探秘ES6】系列专栏:模版字符串 专访图书作者祁宇:C++11让程序更简洁、更现代、更强大 滴滴打车CTO张博:生死战役,技术和时间赛跑 Qualcomm拥抱创客文化:如何基于DragonBoard 410c创造和创业? 【探秘ES6】系列专栏:剩余参数和默认参数 专访资深程序员庄晓立:我为什么要选择Rust? 主会讲师确认,2015中国人工智能大会火热报名中 容联·云通讯线下沙龙:IM 5.0助力App社交化 【CTO讲堂】全数据驱动产品优化,美国互联网公司A/B测试经验分享 《近匠》易快报:以报销做企业消费场景下的Slack 纷享销客D轮融资1亿美金,启动开放平台战略! 专访4秒源码商城CTO陈杰:扎根互联网的“不安的心” iOS UIView动画实践(一):揭开Animation的神秘面纱 【前端人生】Teambition前端工程师陈涌:非计算机专业,依托社区不断成长壮大 iOS UIView动画实践(二):Spring Animation与人机交互 基因组与数据整合:DNA应用开发正在临近 2015 PHP框架调查结果出炉,Laravel最受欢迎! 怎样求得两时间相差10天? 各位高手们 关于ATL COM 在98和2000下的区别 关于CEvent 如何判断commondialog.showsave ,用户是按了确定,还是取消按钮? 我最近编写一个DLL,用来实现ftp功能,使用了delphi中的nmftp控件,结束调用后总出现莫名其妙的内存错误。请高手指教! 请问哪里有win2000 server的软件下呀?迫切需要,恳请各位能帮忙!谢谢! 面试时问主考官什么样的问题算有水平? 我枚举一个外部程序的子窗体,可是却只看到了TDXDraw,我怎么样才能得到TDXDraw中更多的信息呢? 帶一個checkbox的list應該怎麼做? 扫描程序如何循环处理一段IP地址? 数据库中图片如何调用? 如下错误是什么意思,如果解决 一个关于SQL的问题 残啊?都要计算机专业毕业的。。。。。 Miscrosoft Scrioting Library是何东东?Scrrun.dll上那去弄? 如何让softice支持usb鼠标,键盘 多线程程序中使用采用单线程编译参数编译的DLL,会有什么后果? 很多on error goto ... 很简单,有NT4.0或XP的朋友一看就知道。在线等待 手工配置Grub:希望能对大家有所帮助 新显卡驱动For Linux Where download? ADO问题?????????????/ 请问c++的handle class是什么东东呀 怎么textBox控件不可以使用 \n,\r等语句?????? CEdit疑问 急切在线等:打包时出现的问题! 今天我生日,放分!!! 网络财务系统管理信息系统源代码销售 pb8的序列号问题!............................在线等待!!! 在javscript里面怎么判断一个变量(var定义的)是数字? 在线!!!哪位知道好的关于DSP的论坛? 请教高手,如何编程实现一台计算机通过拨号(modem)连接到对方计算机,并实现文件传输? ■■■有没有右键菜单也像VS.NET风格的???■■■ 有没有现成控件,实现EXCELL式的编辑功能 关于BCB中开发DirectDraw的问题 诚聘高手开发电子辞典? 请问一下了dbeng7 -Q的有关事项了? 高手请拉兄弟一把:TField 有一个OnValidate事件,可用它来校验,能否利用它来替换? 怎样把DataSet里面的数据写入一个Excel和Access文件里面? DX全屏模式下如何显示MFC控件? 关于保存对话框的问题,请教高手,谢 (简单问题送分)如何得到select语句得到的数局条数??? 谁能答出来?给分500!!! 很奇怪的问题了 c/s模式,后台是sql server 关于保存对话框的问题,请教高手,谢 类的定义问题 怎样将十进制数转换成十六进制数? 用DataGrid作分页显示,我想让鼠标移到某行时,这行就改变颜色?具体该怎么办? 版主,请进,帮我结贴,沉年老事,我不想再提,越提越伤心,最好帮我删了。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘