Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
156to160
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
156to160
156to160
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Warten bis externe Anwendung beendet ist (WinAPI)

Warten bis externe Anwendung beendet ist (WinAPI)
04.09.2002 10:41:22
Sebastian Brandt
Ich habe das Problem, daß auf einem Win98-Rechner die nachfolgende Prozedur sowohl unter Excel97 als auch Excel2000 sauber läuft, aber auf einem Rechner mit WinXP nicht. Excel wartet nicht, bis der Editor wieder geschossen ist.
Kann mir jemand einen Tip geben, woran das liegt?

Danke im voraus SebastianBr (Code folgt)


Public Const PROCESS_QUERY_INFORMATION = &H400
Public Const WAIT_TIMEOUT = &H102&
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Sub EditorStarten()
SystemWartenBisProzeßBeendet ("notepad.exe")
End Sub

Sub SystemWartenBisProzeßBeendet(ProgEXE As String)
Dim ProcessID As Long
Dim hProcess As Long
Dim RetVal As Long
ProcessID = Shell(ProgEXE, vbNormalFocus)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessID)
Do
DoEvents
RetVal = WaitForSingleObject(hProcess, 50)
Loop Until RetVal <> WAIT_TIMEOUT
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Warten bis externe Anwendung beendet ist (WinAPI)
04.09.2002 11:27:47
Andreas S
Hallo,

versuch mal folgendes (ungetestet!:

Füge folgendes ein:
Declare Function GetExitCodeProzess Lib "kernel32" _
(byVal L_Prozess as Long, l_ende as Long) as long

Public Const STILL_ACTIVE=&H103


Dim l_ende as Long
Dim L_Prozess as Long


und ersetze die Do Loop-Schleife durch folgende:

Do while l_ende =STILL_ACTIVE
GetExitCodeProzess l_prozess, l_ende
DoEvents
Loop

Gruss
Andreas



Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige