Function TerminateProcess Lib "kernel32" (ByVal _
hProcess As Long, ByVal uExitCode As Long) As Long
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 Declare
Function GetExitCodeProcess Lib "kernel32" (ByVal _
hProcess As Long, lpExitCode As Long) As Long 'neu
Const PROCESS_TERMINATE = &H1
Const Aktiv = &H103 'neu
Private ProcessId As Long
Private ProcessId_Exit As Long
Private RetVal As Variant
Sub Test3()
Dim l As Long
ProcessId = shell("D:\app\fcit\kpro46de\rkern\kprohaup.exe", vbNormalFocus)
'Shell startet das ausgewählte Programm.
ProcessId_Exit = OpenProcess(PROCESS_TERMINATE, 0&, ProcessId)
'Mit dieser Funktion erhalten Sie das Object-Handle auf den
'aktiven Prozess.
Do
GetExitCodeProcess ProcessId_Exit, l
DoEvents
Loop While l = Aktiv
RetVal = TerminateProcess(ProcessId_Exit, 1&)
'Mit der TerminateProcess Funktion können Sie den ausgewählten
'Prozess und all seine Threads (falls vorhanden) beenden.
RetVal = CloseHandle(ProcessId_Exit)
'Hier wird das Handle wieder geschlossen.
End Sub
]
Vielen Dank!
MFG Kretschi
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function TerminateProcess Lib "kernel32" (ByVal _
hProcess As Long, ByVal uExitCode As Long) As Long
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 Declare Function GetExitCodeProcess Lib "kernel32" (ByVal _
hProcess As Long, lpExitCode As Long) As Long 'neu
Const PROCESS_TERMINATE = &H1
Const Aktiv = &H103 'neu
Private ProcessId As Long
Private ProcessId_Exit As Long
Private RetVal As Variant
Sub Test3()
Dim l As Long
Dim Zähler As Long
ProcessId = Shell("D:\app\fcit\kpro46de\rkern\kprohaup.exe", vbNormalFocus)
'Shell startet das ausgewählte Programm.
ProcessId_Exit = OpenProcess(PROCESS_TERMINATE, 0&, ProcessId)
'Mit dieser Funktion erhalten Sie das Object-Handle auf den
'aktiven Prozess.
Prüfe_Nochmal:
If Prüfe("Name Fenstertitel") = False Then 'hier Titel des Fenster eingeben der nach _
Programmende angezeigt wird
AppActivate "Microsoft Excel"
Sleep (100) 'warte mit Prüfung 100 Millisekunden
Zähler = Zähler + 1
If Zähler > 100 Then GoTo Anwendungsfehler: 'nach 100 * 100 Millisekunden abbruch der _
Schleife
GoTo Prüfe_Nochmal
End If
RetVal = TerminateProcess(ProcessId_Exit, 1&)
'Mit der TerminateProcess Funktion können Sie den ausgewählten
'Prozess und all seine Threads (falls vorhanden) beenden.
RetVal = CloseHandle(ProcessId_Exit)
'Hier wird das Handle wieder geschlossen.
Exit Sub
Anwendungsfehler:
MsgBox "Zeit abgelaufen"
End Sub
Function Prüfe(Fenster As String) As Boolean
On Error GoTo fehler
AppActivate Fenster
Prüfe = True
Exit Function
fehler:
Prüfe = False
End Function
Gruss
Tino