Avatar billede jgni Nybegynder
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 ?
Avatar billede 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
Avatar billede jgni Nybegynder
17. april 2003 - 01:01 #2
Lukker her....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester