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

如何判定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

Windows Phone 8.1被曝光信息汇总 Phaser:开源的HTML5 2D游戏开发框架 HTML5调查:做的好,收入不比iOS差 汽车巨人福特让“数据”说话 基调数据解读2014网购行业的3大变化 测测:用百度Clouda占卜移动互联网 微软的无奈:或允许Android应用运行于Windows平台 如何选择适合自己的编程语言 Google Now新增语音命令:生活简单一点,让爱更近一点 千万美金收购案:GetJar是一家怎样的公司 传苹果与时代华纳等公司合作,推新一代Apple TV 追本溯源 解析“大数据生态环境”发展现状 为Hadoop存储层增加对OpenStack Swift的支持 详解并行逻辑回归 在AWS上使用GPU实现分布式神经网络 大数据时代,看“小数据”如何支持决策 22人15天研发 微信红包系统发起“珍珠港偷袭”的背后 开发产品防脱节,DevOps来帮忙 手游福音:官方中文版Unity用户手册免费发布 支持多平台!2D和3D游戏引擎Godot宣布开源 从Google备份互联网看“数据安全” NBA全明星周末,数据打造下的辉煌盛事 2014情人节没活动?我们来帮你! Windows 8授权销售已超过2亿份 速度不及Win 7 IDC:2013年第四季度Windows Phone出货量大幅增长 深入思考SDN的核心本质:从SDN=OpenFlow回到软件定义网络 谷歌、VMware在Chromebooks上双赢了,微软你怎么看? Tizen真要来了!又有15家IT大佬成帮会成员 研发周报:开源世界应该致谢的五家公司 Square、LinkedIn、Google... 看国外巨头如何“绑架”用户? 一周消息树:5.5寸屏幕的iPhone 6概念机来袭、索契冬奥会开幕式现Bug 关于箭头在数据窗口移动的问题? 再问个菜鸟问题,showmodaldialog的title怎样控制 javascript中如何取整? ALT和MFC的区别是什么?? 试用DELPHI6,BUG太多了! 我是新手,请问在delphi5中如何建库(orcle和sybase)? 问一个比较弱智的问题 js文件里如何使用另一个js文件里的函数30? 哪位大虾知道可以在哪里下载mpeg-1的codec,谁先告诉有效地址谁先得分!(不给分是小狗!) 可能很菜的问题,送分的问题!! 一个关于CDaoTableDefInfo的问题 ado的问题??求救!!!高分!!! 有关代码重用的问题,对Form的继承。 一个关于CString.Format的问题 学习编程时学图算法怎么学好? 一个很简单的CREATE TABLE语句为什么出错呢?向大家请教! jbuilder5运行需要最低配置 ,傻傻的问 Delphi6的盗版已经到了@_@ 喂,为什么我提问只能给最多37分,原先可比这要多的多 一个关于派生类的问题 关于页面关闭的问题 用new JTalbe(10, 20)创建了一个table,如何设置该table列(column)的宽度 请教一个关于用VC6开发outlook\exchange的问题。急!急! 时间服务器 请问一下,用DBM,如果用户注册的数量多了以后,程序的速度很一般的文本速度比较哪个快 纯数学问题:如何求模逆元? VB中实现进程间通信的方法?VB中的CallWindowProc的用法?VB中如何发送自定义的消息? 请问哪里能免费下载BCB5?下载多长时间没有关系,只要能够正确使用就可以了。 怎样得知CListCtrl中当前选项? 我想从WINME中自带的一个驱动程序提取出来在WIN97中安装,请问应如何做? 菜问题(2) 请教:为何数据库数据无法在网页上显示? CEditView 一定要override onChange function(ON_CONTROL_REFLECT(EN_CHANGE, OnChange))????;否则input 时不我待会错??? 请教:不通过页面,用VB如何得知来访者的IP? 如何将vcd转化为real的格式???????????急!!!!!!!!!!!!!! 对DMO播放内存MPEG2数据没有头绪,谁能给点提示? 支持bestbestbest!!!!!!!!!!!! 如何在win98下使用EJB? applet 可以打开到一个server的socket么 谁知道国内哪有下载jdk1.4,Thanks! 如何配置For Oracle8i 的ODBC? 请教如何动态改变窗口大小 弟兄们救命啊!!!rational rose中mdl的导出 Jbuilder5.rar的密码? 这条语句为何通不过?请指教! 各位大虾:一个WWW服务器,不通过页面,要得到访问者的IP怎么办? 劳改犯严正声明:支持3B、蝈蝈的正确领导,声讨"捣蛋杂碎"及"跳梁小丑".坚决维护水园的安定团结. 哪位高手能给我解释一下,关于Hook技术,谢谢 pcb板什么什么东东? 请问:malloc()函数的作用是什么? 关于TTS(vcmd.exe自动化服务器) 在一条公路的两侧栽树,每隔5米栽一棵,公路的两端都有树,公路长400米,公路两侧一共要值几棵树? 绿色行动中,学校把560棵树苗按人数分给六年级3个班栽,一班47人,二班45人,三班48人.3个班各栽多少棵? 一个池塘周长为240m沿池塘周围每隔4米栽一棵柳树,每两棵柳树之间等距离栽了3棵杨树,一共栽了多少棵柳树,多少棵杨树?求算式子? 在一条长25米的公路一边栽树,从一端起,每隔5米在一棵树,路两边都要载,一共载多少 一个鱼塘的周长是1500米,沿鱼塘周围每隔6米栽一棵杨树,需要种多少棵杨树? 一个湖泊周长为1800米,沿着湖泊周围每隔12米栽一棵柳树,每个两棵柳树中间载一棵桃树和一棵杨树.问:每两棵树之间的距离是多少?共多少棵树? 一条公路长500米,在路的一边栽树,起点和终点都栽,一共栽了26棵树,平均每隔几米栽一棵? 一个圆形鱼塘的周长是1500米,沿鱼塘周围每隔6米栽一棵杨树,需要在多少棵杨树? 一个湖泊周长1200米,沿湖泊周围每隔3米栽一棵杨树,每两棵杨树中间栽一棵柳树.湖泊周围各栽多少柳树杨树 一条路长525米,在路的一旁栽树,每隔5米一棵,两端都栽,一共需要栽多少棵树 一个圆形养鱼池的周长是150米,现在要在他的周围种上柳树,每隔6米栽一棵树,一用需要多少棵树? 一个圆形鱼塘的周长是270米,每隔9米种一棵杨树,每相邻的两棵杨树之间均匀地栽两棵柳树.栽了多少棵杨树?多 同学们给90米的小路一侧栽树,每隔3米栽一棵.如果两端都不栽树,一共需要多少棵树苗? 一个鱼塘的周长是1500米,沿鱼塘周长每隔6米载一棵杨树,需要载多少棵杨树? 在一个周长是1200米的正方形池塘四周栽树,每隔10米栽一棵杨树,后来又在每两棵杨树之间又栽了2棵柳树. 学校有一条长600米的小路,准备再小路的两旁栽树,每隔4米栽一棵,如果两端都栽树,共需要多少棵树苗? 在一个长方形鱼塘四周每隔4米栽一棵树,一共栽了120棵《四个角各在一棵》,这个鱼塘周长多少米? 等差数列:要在一周长400米的池塘周围等距离地在栽一些柳树,株距10米,再在每两棵柳树间栽3课杨树,在这个池塘周围共栽树多少棵 在一条长300米的公路两边栽树,每隔4米栽一棵,共栽多少棵 一个湖泊周长1800米,现在每隔6米栽一棵柳树,每两棵柳树之间栽一棵桃树.湖泊周围柳树和桃树各栽多少 一个圆形广场的周长是100米,如果围着广场每隔10米种一棵树,一共要种几棵树? 在一条长20米的小路两旁栽树,每隔5米在一棵树,一共栽多少棵? 1个湖泊周长1800米,现在每隔6米栽1棵柳树,每2棵柳树之间栽1棵桃树.湖泊周围一共栽了多少棵柳树和多少棵桃树? 周长为300米环形,每隔3米种一棵树,栽倒30颗树后接到通知改成每隔5米栽一个树后接到通知改成每隔5米载一棵问可以载多少颗树 绿化队栽树第一天栽了120棵第二天栽了136棵这时已栽的棵树与剩下的棵树的比是4:9还剩多少没有栽(用比例解 在周长为8040米的大堤,堤上每隔8米栽柳树一棵,然后在相邻两棵柳树之间每隔2米栽桃树一棵,准备桃树几棵? 公园里湖的周长是2100米,围湖每隔14米种一棵树,要种几棵树? 小芳小明小林共栽120棵树,其中小芳栽棵树是总棵树的一半,小林栽的棵数是其他三人栽的总棵数的3分之1小明栽的棵数是其他三人的4分之1小红栽几颗 池塘周长450米,沿池塘周围每隔3米栽一棵柳树,每两柳树中间栽一棵桃树,池塘周围各栽多少棵柳树和桃树 一个圆形池塘,它的周长是27米,每隔3种一棵树,共需要几棵? 小明小芳走一段路,小明走的路程比小芳多5分之1,小芳用的时间比小明多8分之1,小明与小芳的速度之比是? 一湖泊周长1800米,沿湖泊周围每隔3米栽一棵柳树,每2棵柳树中间栽2棵桃树,湖泊周围栽柳树几棵?桃树几棵给下算式 周长为300米环形,每隔3米种一棵树,后接到通知改成每隔5米栽一个树,问可以载多少数题目叙述的不完整 是栽倒30颗树后接到通知改成每隔5米栽一个树,问可以载多少数 小红小明小芳在400米一圈的环形跑道上跑步.小红每分钟跑80米,小明每分钟跑120米,小芳每分钟跑140米,他他们三人同时在同一起点出发,小红和小明相反跑,几分钟后祥云?小明和小芳同一方向跑, 在某淡水湖四周筑成周长8040米的大提,提上每隔8米栽柳数一棵,然后在相邻两棵柳树之间每隔2米栽桃树一棵.应该准备柳树和桃树各多少棵/ 关于两棵大树围着一棵小树的作文.450字 小明、小林、小芳共采集树种17千克.小明说:我采集了其中的2分之1.小林说:我采集了其中的3分之1.小芳说,我采集了其中的9分之1.已知这三个小朋友个采集的树种都是整千克数,问各采集树 在某淡水湖四周筑成周长为8040米的大堤,堤上每隔8米栽柳树一棵,然后在相邻两棵柳树之间每隔2米栽桃树一棵,应准备柳树和桃树各多少棵? 两棵大树中间有一棵小树 一边有太阳 一边下雨 600字作文 小明与小芳各走一段路,小明走的路程比小芳多六分之一,小芳用的时间比小明少八分之一,小明小芳速度比 一个正方形水库的周长是1600米,在水库的周围每隔8米栽一棵柳树,每两棵柳树中间再载两棵白杨树共种多少树一个正方形水库的周长是1600米,在水库的周围每隔8米栽一棵柳树,每两棵柳树中间 看图作文,两棵强壮的大树中间有棵矮小的小树 沿着400米的环形跑道跑步,同时从同一地点出发,同向而行,小明每分钟跑300米,小方每分钟跑260米.经过多少分钟小明可以追上小方?那是相遇,这是追及 水库大坝是一个近似圆形,周长是2430米,每隔9米种柳树1棵,可种柳树多少棵?相邻两棵柳树之间每隔3米又种水库大坝是一个近似圆形,周长是2430米,每隔9米种柳树1棵,可种柳树多少棵?相邻 两棵大树之间相距250米,园林部门计划在两棵大树的中间补栽小树,便每两棵小树之间的距离是10米,一共要补栽多少棵小树? 小明,小方两人在400米的环形跑道上练习跑步,小明每分钟跑300米,小杰每分钟跑230米.小明,小杰两人同时同出发,出发时,他们在同一点 问 小明几分钟追上小杰 如图在某一平地上,有一棵树高八米的大树,一棵高三米的小树,两树之间相距12米,今有一只小鸟在其中一棵树梢上,要飞到另一棵树的树梢上,问它飞行的最短距离是多少 两棵大树中间有一棵小树 一边有太阳 一边下雨 题目该怎么起 一条环形跑道长400米,小红练习骑自行车,平均每分钟骑550米,小明跑步,每分钟跑250米,两人同时同地出发.问:若两人同向而行经过多长时间首次相遇 在某一平地.有一棵高8米的树.在距离12米的地方有一棵小树.问两树尖相距多少米(解法) 两棵大树之间相距250米,园林部门计划在两棵大树中间补栽小树,使每两棵小树之间的距离是10米.一共要补栽多少棵树 在一段公路的两边每隔4米栽一棵树,一共栽树74棵,现在要改每隔6米载一棵树.那么,不栽的树有多少棵?帮帮我吧~教科书的答案是26棵,不知你们怎样做~~~~谢谢!不是不栽,而是不移栽~~~~~sorry~~~拜 小红小明小芳在400米一圈的环形跑道上跑步小红每分钟跑80米小明没分钟跑120米小芳每分钟跑140米他们三人同时一起点出发小红和小明相反跑几分钟后再次相遇?小明和小芳同一方向跑,几分钟 在某一平地上,有一棵高6米的大树,一棵高3米的小树,两树之间相距4米.今一只小鸟在其中一棵树的树梢上要飞到另一棵树的树梢上,问它飞行的最短距离是多少? 公路两边栽树,每隔4米栽一棵,共栽74棵,现改成每隔6米栽一棵,那么不要移栽的树有多少棵? 小明和小亮沿400米长的环形跑道跑步,他们从某处同时出发,如果同向而行,那么经过200s小明追上小亮,如果背向而行,那么经过40s两人相遇,求两人的跑步速度.最好用二元一次方程解 平地上有一颗15米的大树和一颗高7米的小树,两树之间相距15米,一只小鸟要从其中一树的树梢飞到另一棵树的树梢上,问他飞行的最短距离是多少? 在一条长300米的公路两旁栽树,每隔4米栽1棵(两头都栽),一共要栽多少棵树 学校把栽70棵树的任务,按照六年接三个班的人数分配给各班,一班有46,二班有44人,三班有50人.求三个班给应栽多少棵树是求3个班各栽多少棵树 平地上有一棵高8m的大树和一棵3m的小树,两树之间相距12m.一只小鸟要从一棵树的树梢上飞到另一棵的树梢上,问它飞行的最短距离是多少(画出草图然后解答)?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn