09. december 2002 - 17:01
Der er
1 kommentar og
1 løsning
Shell
Jeg har et program i VB, der starter et andet vha. shell:
admID = shell (adm.exe, vbNormalFocus)
problemet er at jeg gerne vil vente med resten af udførelsen indtil brugeren har afsluttet adm.exe, kan dette lade sig gøre på en forholdsvis simpel måde ? Kan man bruge det returnerede task-ID til at busy-waite indtil programemt ikke længere kører ?
Slettet bruger
09. december 2002 - 17:12
#1
Her er en funktion som du kan bruge :-)
Private Sub ShellAndWait(ByVal program_name As String, _
ByVal window_style As VbAppWinStyle)
Dim process_id As Long
Dim process_handle As Long
' Start the program.
On Error GoTo ShellError
process_id = Shell(program_name, window_style)
On Error GoTo 0
' Hide.
Me.Visible = False
DoEvents
' Wait for the program to finish.
' Get the process handle.
process_handle = OpenProcess(SYNCHRONIZE, 0, process_id)
If process_handle <> 0 Then
WaitForSingleObject process_handle, INFINITE
CloseHandle process_handle
End If
' Reappear.
Me.Visible = True
Exit Sub
ShellError:
MsgBox "Error starting task " & _
txtProgram.Text & vbCrLf & _
Err.Description, vbOKOnly Or vbExclamation, _
"Error"
End Sub