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

如何判定VB调用的一个EXE程序已经结束.

HTML文档下载 WORD文档下载 PDF文档下载
如何判定VB调用的一个EXE程序已经结束.
- noname
回答:
新建一个项目,添加命令按钮和标签各一个,加上以下代码,然后运行....
Option Explicit
' Copyright ? 1997 by Desaware Inc. All Rights Reserved
Dim DemoFile$
Private Const NORMAL_PRIORITY_CLASS = &H20 '如果进程位于前台,则基本
值是9;如果在后台,则优先值为7
Private Const INFINITE = &HFFFFFFFF
Private Const WAIT_TIMEOUT = &H102& '对象保持未发出信号的状态,
但等待超时时间已经超过

'说明∶PROCESS_INFORMATION结构由CreateProcess函数将关于新建立的进程和
'主要线索的信息写入其中成员变量
Private Type PROCESS_INFORMATION '
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End Type

'说明∶STARTUPINFO结构用在CreateProcess函数中指定为新进程建立的新窗口的
主要属性。这一
'一信息影响由CreateWindows函数建立的第一个窗口
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As
Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal
hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcess 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,
lpEnvironment As Any, ByVal lpCurrentDirectory As String, lpStartupInfo
As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function WaitForInputIdle Lib "user32" (ByVal hProcess
As Long, ByVal dwMilliseconds As Long) As Long




Private Sub command1_Click()
Dim res&
Dim sinfo As STARTUPINFO
Dim pinfo As PROCESS_INFORMATION
sinfo.cb = Len(sinfo)
sinfo.lpReserved = vbNullString
sinfo.lpDesktop = vbNullString
sinfo.lpTitle = vbNullString
sinfo.dwFlags = 0

Label1.Caption = "正在启动程序"
Label1.Refresh
' CreateProcess函数,用于创建一个新的进程
res = CreateProcess(DemoFile, vbNullString, 0, 0, True, _
NORMAL_PRIORITY_CLASS, ByVal 0&, vbNullString,
sinfo, pinfo)
If res Then
Label1.Caption = "程序正在运行"
WaitForTerm pinfo
End If
Label1.Caption = "程序已经结束"

End Sub

Private Sub WaitForTerm(pinfo As PROCESS_INFORMATION)
Dim res&
' 等待指定的进程进入空闲状态,,空闲(Idle)指的是进程准备处理
'一条消息、但目前暂时没有消息需要处理的一种状态
Call WaitForInputIdle(pinfo.hProcess, INFINITE)
' 关闭指定进程
Call CloseHandle(pinfo.hThread)
Command1.Enabled = False
Label1.Refresh
Do
'等待发出信号
res = WaitForSingleObject(pinfo.hProcess, 0)
If res <> WAIT_TIMEOUT Then '如果对象发出了信号
Exit Do
End If
DoEvents
Loop While True
Command1.Enabled = True
Call CloseHandle(pinfo.hProcess)
End Sub

Private Sub Form_Load()
DemoFile = InputBox$("请输入需要运行的程序名", , "C:\WINDOWS\notepad.
exe")
End Sub
-星泽(xing) vbxing@990.net

回答二:
例程如下:

Option Explicit

Private Declare Function OpenProcess Lib "kernel32" (ByVal
dwDesiredAccess
As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal
hProcess
As Long, _
lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As
Long)
As Long

Private Const PROCESS_QUERY_INFORMATION = &H400
Private Const STATUS_PENDING = &H103

Private Sub RunShell(cmdline As String)
Dim hProcess As Long
Dim ProcessId As Long
Dim ExitCode As Long
ProcessId = Shell(cmdline, 1)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessId)
Do
Call GetExitCodeProcess(hProcess, ExitCode)
DoEvents
Loop While ExitCode = STATUS_PENDING
Call CloseHandle(hProcess)
MsgBox cmdline & "已经关闭"
End Sub

Private Sub Command1_Click()
RunShell "c:\windows\notepad.exe"
End Sub

《近匠》第10期:友盟——开发服务平台化 LinkedIn耗资1.2亿收购数据驱动招聘服务公司Bright 谷歌推视频会议硬件产品Chromebox 基于Chrome OS 文件上传组件导致Apache DoS安全漏洞 EA,你是来拉仇恨的吗? Beep:前Google员工打造的流媒体音乐控制器 有利于开发App的5款天气预测API 七问微软新CEO,你准备好了吗? Hadoop虽然强大,但不是万能的 Flappy Bird:萌贱游戏日进斗金的烦恼 IT技术支持:索契冬奥会背后的无名英雄 简单10招,让你的云计算事业锦上添花 微软、谷歌及苹果从哪赚钱? 高大上!5.5寸屏幕的iPhone 6概念机来袭 苹果CEO Tim Cook:我们是一家快速发展的公司 2014年美国大学生数学建模竞赛翻译及建模思路 围观龙虎斗:谷歌GCE vs. 亚马逊AWS,要做9件事 未来编程趋势的12个猜想 命令行永存... IBM发布SmartCloud数据虚拟化服务 嚓嚓嚓嚓:虐心的Flappy Bird今日终于下架 Flappy Bird不再“飞翔”后,还剩下什么? 索尼抛售PC业务:内忧外患导致全面退出 慧正通软技术副总裁:工作流引擎厂商的生存之道 TIOBE 2014年2月编程语言排行榜:VB.NET首次进入TOP 10 斯诺登仅用“网络爬虫”软件获取机密文件 全球开发者:iOS、Android、WP哪个最赚钱? 推荐15款响应式Web设计测试工具 开源世界应该致谢的五家公司 Square、LinkedIn、Google... 高薪利器:四大热门云计算认证推荐 陌生的编程任务,该拿你怎么办? 辟谣:网传Flappy Bird开发者已经自杀 熟悉Sybase的兄弟帮个忙. (100分) 怎样在窗口的open事件中控制打开本窗口中tab的某个tabpage 利用sqlDataReader绑定到datagrid时的分页如何做?我只看到2个页面,第一页,然后无论点哪页看到的都是同一个 在vc中怎样设置一个全局变量??? ------小女子想问问:想模拟实现中间件的特性,该怎么办?----- 在DOS下如何把“我的文档”在从C:移动到D:?里面有多层目录. XCOPY吗?急救! 关于喷泉模型 请教SQL语句问题: 请问有什么好的介绍WEBSERVICE的网站 请问各位高手,谁那里有dos5.0我急需要,谢谢分数多多 为什么老提示“From子句语法错误”? 那位大哥大姐给小弟讲讲注册表编程(BCB)我分全给 ------小女子想问问:想模拟实现中间件的特性,该怎么办?----- 请问高手Delphi7如何开发.net程序? 请问哪里有CSDN技术论坛上的离线数据资料??(最好是chm文件,以便全文检索) 存储过程建立问题? 学习过程中遇到的问题:类注册错误 如何继承接口?很急啊~~~ 一个简单的问题,不会耽误你太多的时间! 不知道控制台程序中能不能实现多线程,如果能各位帮我看看这个错误是怎么个情况 如何定时删掉数据库中的一些数据? 请问vb里该如何使用一些特殊字符(如如何使用对勾呢?) 请问在VBScript编程中相当于VB编程中Val()函数是哪一个?(急用!) 急救,在线等待,吐分了!!!! 核心编程光盘使用问题 MSFlexGrid控件要如何添加内容? 苦追一女孩3年--身心疲惫;开学了,没寝室--万念俱灰! 一个标记怎么不识别"回车"??? 大家有什么软件需要兼职人员开发的吗? 高分寻求《WEBV数据库数据规划》《数据库模型》相关书籍及其有效下载地址!! 送点分,怎么样在一台只有win2000 server的系统上运行asp.net程序?? 如何在Response.Redirect中传递HTML控件的值? 请问做安装程序时候,如何避免Installshield在控制面板的添加删除程序中增加项?? 怎样随机抽取access数据库中的n条记录呢? 请问大家看完think in java用多少时间呀? Access数据库的日期查询在2000下一切正常,在98下查询出错? vc中def文件有何用处,是否可随意删除? 关于sql语句的问题,急急急,在线等!! 请绝顶高手回复(问题的详细情况) 通用模板的问题 一个用户控件的问题!请求帮助! 关于Socket的同步和异步的问题 菜单上的变量也要定义嘛?该如何定义? 一个关于servlet的问题! dll的问题 怎样才能不用鼠标取点击按钮,直接用代码去执行按钮 高分请教SqlDataAdapter中存储过程的调用 evc中资源文件的中文乱码问题该如何解决? linux环境下的编程请教 大家有什么软件需要兼职人员开发的吗? 新手请教 我的说 既然消化腺是分泌的消化液 那为什么通常说消化腺分泌各种消化酶呢? 喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵 啵一啵是什么意思 关于新制试剂和久置试剂化学中常出现"新制"和"久置",为什么新制试剂和久置试剂反应效果会不同?各位高人能否大致总结一下新制试剂和久置试剂的区别?//最好拿氯水和Cu(OH)2举例吧~因为刚 你多少级啊,可以打啵咕运动会吗?怎么打啊, 陈涉世家重点我想问问陈涉世家 的重点 句子 和字词 怎样制这些化学试剂Fe2(CO3)3,Al2(CO3)3,CaS,AgOH,CuCO3,HClO4,N2O,N2O5,N2H4,H2S,用As2S3制As一般的化学试剂我有它们不稳定也没关系,教我制就行了 一个圆柱体的体积是300立方厘米,侧面积是100平方厘米,这个圆柱的侧面积是多少?打错了,是表面积 陈涉世家的中心是什么?急!简略精炼 能不能用广口试剂瓶装液体试剂,家庭实验室 圆柱的侧面积是188.4平方厘米,底面半径是5厘米,圆柱体的体积是多少立方厘米? 陈涉世家的中心是什么 病毒不能( )生活,它的繁殖一定要在( )中进行? 求氧化还原反应难点的例子 在离体的植物器官、组织或细胞脱分化形成愈伤组织的过程中,下列哪一项条件是不需要的 A、适宜在离体的植物器官、组织或细胞脱分化形成愈伤组织的过程中,下列哪一项条件是不需要的 A 青海是长江黄河还有什么的发源地? 【急】小学生国庆作文300字左右【急】【急】国庆作文300字左右【急】 除焦水控制阀的三种工作状态是 等腰三角形的周长为2p,它围绕底边旋转一周成一几何体,问三角形的个边长分别是多少时,几何体的体积最大? 450字以上急.450字以上 中药饮片和一般的中药材有什么区别?中药饮片是经过配伍的吗?它的出现能代替中药材吗? 杯子碎了有什么征兆 关于“做新时代的好青年"或”热爱祖国,振兴中华“为话题的作文庆祝“五四”运动九十周年,“国庆”六十周年,歌颂“改革开放”三十年写文章 中药材,中药饮片和中成药的区别 高中数学 导数应用1.设f(x)=(2-x)(X+2)²(1)求f(2)的极大值点与极小值点(2)求f(2)单调区(3)求f(x)在[-5,1]的最大值与最小值.2.竖直向上弹射一枚无动力火箭,初速度为v0=980 用英语翻译一下下面这两句话啵 、、急用莫泊桑,19世纪后半期法国优秀的批判现实主义作家,与契诃夫和欧·亨利并列世界三大短篇小说巨匠,对后世产生极大影响,被誉为“短篇小说之王”. 中央空调球形出风口上面有很多圆形风口的风口是什么风口 表现热爱祖国的诗句 短我要在班演讲 7A 英语翻译 为.效力 怎么说? 软化水控制阀怎么样? 表现诗人热爱祖国的诗句 白血病怎么治疗患者信息:男 45-59岁 陕西 宝鸡 病情描述(发病时间、主要症状等):慢性白血病病想得到怎样的帮助:看看有什么最佳的办法解决能有什么药物解决吗希望大家帮帮曾经治疗 全自动软水控制阀一般多少钱? 病毒的生活与繁殖必须在几个月内才能完成 请问这是什么车子的中控台? 软化水设备控制阀哪有卖的? 烟草花叶病毒 htv的生活繁衍的场所必须是 这是什么车的中控台? 富莱克软化水设备控制阀产品结构特点与工作流程 一个英文歌.男的唱的,歌词有比啵嘿,比啵嘿,比啵嘿.一个英文歌.男的唱的,歌词有比啵嘿,比啵嘿,比啵嘿,.比啵嘿是连续重复3遍的. 这是什么车的中控台啊? 氧气袋哪有卖? 人体有几个骨头? 打啵是什么意思?谢谢 FLECK的控制阀可以处理150T的软水吗 病毒的生活及繁殖必须在哪里进行拜托了各位 人体有哪些骨头?各有多少块? 啵一个好像不是亲一个的意思 病毒是如何生活喝和繁殖的 氧化还原反应应用事例 如何培养小学生社会公德意识 病毒怎样生活和繁殖病毒的生活方式 繁衍 分类 组成 陈涉世家的重点句 “啵啵啵”和“啪啪啪”是什么意思?为什么很黄很暴力? 高中数学题(导数的应用)已知f(x)= (2x-a)/(x2+2) (x∈R)在区间[-1,1]上是增函数.(Ⅰ)求实数a的值组成的集合A;(Ⅱ)设关于x的方程f(x)=1/x的两个非零实根为x1、x2.试问:是否存在实数m,使得 y=aInx+1/2x+3x/2+1,a属于R,求y的极值.请问这题能不能求出准确值,我算了半天,答案只能大概描述. 啵是什么意思 做一个容积为256升的方底无盖水箱,它的高为多少时材料最省?) NAOH标准溶液在保存过程中吸收了CO2,再滴定HCL,若以酚酞作指示剂,对实验结果会不会有影响?请详细说明原因,THX 突出青少年的社会公德意识培养,必须重视什么
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘