Permanentes Prüfen auf Excel-Instanz
28.01.2006 12:45:12
Peter
Hab mal ne Frage. Wie kann ich in einer xls Mappe permanent prüfen ob noch eine zweite Excel Instanz geöffnet wurde. Hab in der Recherche folgenden Code gefunden (glaube Reinhardt hat in gepostet), die Frage ist jetzt nur wenn ich den Code mit Application.OnTime, sagen wir mal alle 5 Minuten starte, wird das ganze wohl sehr Prozesorlastig.
Gibt es eine einfachere Methode, mal vereinfacht ausgedrückt, sowas wie eine Klasse die ein Ereignis zurückgibt wenn eine neue Application geöffnet wird ?
Danke vorab für die Hilfe.
Option Explicit
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function GetClassName& Lib "user32" Alias _
"GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName _
As String, ByVal nMaxCount As Long)
Private Const GW_CHILD = 5
Private Const GW_HWNDNEXT = 2
Function ExcelInstanzen() As Long
Dim Länge&, Instanzen&, hwnd&
Dim Klassenname As String
hwnd = GetWindow(GetDesktopWindow, GW_CHILD)
Do
Klassenname = String(51, 0)
Länge = GetClassName&(hwnd, Klassenname, 50)
If Left(Klassenname, Länge) = "XLMAIN" Then
Instanzen = Instanzen + 1
End If
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop While hwnd <> 0
ExcelInstanzen = Instanzen
End Function
MfG
Peter