24小时热门版块排行榜    

查看: 2512  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

yhwsmile

金虫 (小有名气)

[交流] 【求助】怎么让vb程序运行结束后自动退出啊 已有5人参与

我用vb调用一个外部程序,我想在外部程序data_con.exe运行结束后,vb自动退出,请问怎么实现啊?谢谢各位大侠了~~~~

下面是代码:
Option Explicit
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Sub Form_Load()

Call Shell("data_con.exe", vbNormalFocus)

End Sub
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yhwsmile

金虫 (小有名气)

ajian04:谢谢参与交流~ 2010-10-23 19:54:14
引用回帖:
Originally posted by magic7004 at 2010-10-22 17:00:35:
方法1.
PID = Shell("data_con.exe",vbNormalFocus)
HANDLE = OpenProcess(PROCESS_ALL_ACCESS,0,PID)
WaitForSingleObject(HANDLE, INFINITE)
End

这样的话,data.con.exe退出之前,VB程序都是 ...

谢谢啊,每次都是你及时帮我解决~~~~
3楼2010-10-23 13:26:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

magic7004

金虫 (职业作家)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
resonant(金币+3):谢谢提供,一种方法评一分:-) 2010-10-22 19:24:07
方法1.
PID = Shell("data_con.exe",vbNormalFocus)
HANDLE = OpenProcess(PROCESS_ALL_ACCESS,0,PID)
WaitForSingleObject(HANDLE, INFINITE)
End

这样的话,data.con.exe退出之前,VB程序都是没有响应的。

方法2
做一个Timer,一直检查Process的ExitCode
Call GetExitCodeProcess(HANDLE,ExitCode)
if ExitCode <> STILL_ALIVE then End

这个方法用Timer比较土

方法3
Hook目标进程,当目标进程结束时,给VB程序发消息

这个方法用VB实现比较麻烦一点
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
2楼2010-10-22 17:00:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

刘昭然

新虫 (小有名气)

加油!

学习啦,我是新手
4楼2010-12-11 08:43:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lwq911

新虫 (小有名气)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+2):谢谢参与应助,欢迎常来程序语言版! 2010-12-24 16:37:44
搞那么复杂啊,干什么啊!
Private Sub Command1_Click()
Dim ret As Integer
Call Shell("data_con.exe", vbNormalFocus)
end
End Sub
5楼2010-12-23 09:51:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见