Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1068to1072
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
Inhaltsverzeichnis

GetExitCodeProcess und Excel

GetExitCodeProcess und Excel
13.04.2009 20:45:54
Norman
Hallo alle,
ich google mich blöde und finde keine Antwort....
Ich habe das HWND von Excel über Application.Hwnd geholt. Dann übergebe ich das HWND (per registry) an eine andere Excel-Instanz und prüfe dort mit anhängender Funktion, ob die 1. Excel-Instanz noch läuft. Leider schlägt GetExitCodeProcess für das HWND immer mit einem LastDllError = 6 fehl.
Habt ihr eine Idee, was ich falsch mache?
Viele Grüße
Norman
Private Declare Function GetExitCodeProcess Lib _
"Kernel32" (ByVal hProcess As Long, _
lpExitCode As Long) As Long
Private Const STILL_ACTIVE = &H103

Public Function ProgStillActive(ByVal hwndProzess As Long) As Boolean
Dim lngLäuft As Long
ProgStillActive = False
If GetExitCodeProcess(hwndProzess, lngLäuft) > 0 Then
If lngLäuft = STILL_ACTIVE Then
ProgStillActive = True
Else
ProgStillActive = False
End If
Else
Debug.Print Err.LastDllError
End If
End Function


4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: GetExitCodeProcess und Excel
13.04.2009 21:41:44
Ramses
Hallo
Vielleicht liege ich falsch, aber das Application.Hwnd taugt in dem Zusammenhang nicht viel, weil es keine Prozessnummer ist
Teste das mal
Option Explicit

Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Sub ExitProcess Lib "kernel32" (ByVal killProc As Long)

Sub checkProcNr()
    Dim killExitProc As Long
    Debug.Print "Application Nummer: " & Application.Hwnd
    'Processnummer der aktuellen Instanz ermitteln
    Debug.Print "ProzessCode: " & GetExitCodeProcess(GetCurrentProcess, killExitProc)
    Debug.Print "Prozessnummer zum beenden: " & killExitProc
    'killt die aktuelle Instanz
    'ExitProcess(killExitProc)
End Sub

... und vergleiche die Nummern die ermittelt werden
Gruss Rainer
Anzeige
AW: GetExitCodeProcess und Excel
13.04.2009 22:45:14
Norman
Hi Rainer,
ah, scheint Sinn zu machen. Ärgerlicher Weise erhalte ich bei GetCurrentProcess -1 als Returnvalue... Gibts doch gar nicht!
Noch eine Idee?
Viele Grüße
Norman
AW: GetExitCodeProcess und Excel
14.04.2009 10:08:31
Tino
Hallo,
geht es vielleicht auch hiermit?
Es wird das Fensterhandle von der Exceldatei mit dieser Caption ermittelt,
ist dieses nicht vorhanden wird 0 zurückgegeben.
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
      (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub Check_Control()
Dim L_HWND As Long
  
  'Microsoft Excel - Mappe1.xls = Caption der Excelanwendung 
  L_HWND = FindWindow("XLMain", "Microsoft Excel - Mappe1.xls")
  
  If L_HWND = 0 Then
   MsgBox "Prozess läuft nicht mehr"
  Else
   MsgBox "Prozess läuft noch"
  End If

End Sub


Vielleicht reicht Dir dies schon aus.
Gruß Tino

Anzeige
WELTKLASSE!!!
14.04.2009 23:36:28
Norman
Hi Tino,
coooole Sache, jetzt funzt es bestens! Und das schöne ist, dass ich den Prozess auch terminieren kann! Vielen Dank für Deine Hilfe!
Viele Grüße
Norman

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige