在线等高手的答案,解决马上送分
用shell调用一外部程序时,如何跟踪该程序的执行进度,并由进度条在VB主程序显示出来(进度条显示外壳程序运行的百分比)
Private Sub Command1_Click()
Dim X As Long
X = Shell("DYNAMICS.exe", vbHide) ‘DYNAMICS.exe为外部程序
Do While StillRun(X) '循环监视外部程序的运行状态
DoEvents
Loop
msgbox "计算完毕"
End Sub
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const Process_All_Access = &HF0000 Or &H100000 Or &HFFF
'声明检测程序运行情况API函数
Private Function StillRun(ByVal ProgramID) As Boolean
'定义一个判断外壳程序运行状态的函数
Dim hProgram As Long
'ProgramID是Shell函数的返回值 (即外部程序的进程号)
hProgram = OpenProcess(Process_All_Access, False, ProgramID)
'返回被测程序的句柄hProgram
If Not hProgram = 0 Then '外部程序还在运行
StillRun = True
Else '外部程序运行结束
StillRun = False
End If
CloseHandle hProgram
End Function
上面的代码可以做到当外面程序运行结束后,提示“计算完毕”,但是有时候这个外部程序运行时间很长,有好几分钟,甚至10分钟,我想用进度条来显示这个程序当前运行的时间占总时间的百分比,高手们请解答,不甚感谢!