小弟做的程序是有个主程序运行,通过主程序调用子程序,传递一些参数。例如:
box.exe运行后,监视进程是否结束,监测到结束后把DifficultLevel+1后继续打开运行下面是主程序的调用过程
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)
Sleep 1
DoEvents
Loop While ExitCode = STATUS_PENDING
Call CloseHandle(hProcess)
End Sub通过下面这句调用相应子程序,通过传递不同的DifficultLevel以打开不同难度的游戏程序
RunShell (App.Path & "\exercises\box\box.exe " & DifficultLevel)现在程序基本运行正常,就是有个问题已经困扰了我很久:该程序在个别机器上(xp系统),当子程序(如:box.exe)运行结束后,程序运行画面消失,但是在进程中依然存在,所以主程序无法监测到子程序已经运行结束(需要手工结束进程),同一个子程序也不是每一次都出现这样的问题,但还是有时候会出现,很奇怪。
还往各位前辈帮帮小弟,先行感谢了!
box.exe运行后,监视进程是否结束,监测到结束后把DifficultLevel+1后继续打开运行下面是主程序的调用过程
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)
Sleep 1
DoEvents
Loop While ExitCode = STATUS_PENDING
Call CloseHandle(hProcess)
End Sub通过下面这句调用相应子程序,通过传递不同的DifficultLevel以打开不同难度的游戏程序
RunShell (App.Path & "\exercises\box\box.exe " & DifficultLevel)现在程序基本运行正常,就是有个问题已经困扰了我很久:该程序在个别机器上(xp系统),当子程序(如:box.exe)运行结束后,程序运行画面消失,但是在进程中依然存在,所以主程序无法监测到子程序已经运行结束(需要手工结束进程),同一个子程序也不是每一次都出现这样的问题,但还是有时候会出现,很奇怪。
还往各位前辈帮帮小弟,先行感谢了!
taskkill /pid Num
or
taskkill /im name.exe
解决方法是:在退出“子程序”的主界面时,执行unload 方法卸载隐藏的那个窗口就行。