Hallo,
weiß jemand, wie man unter WIN95/98 per VBA abfragen kann ob und wie oft das DOS-Fenster geöffnet wurde? Falls ja, wie kann ich dann den Namen des Fensters auslesen?
Vielen Dank für Eure Hilfe!
Gruß
Uwe
Hallo,
weiß jemand, wie man unter WIN95/98 per VBA abfragen kann ob und wie oft das DOS-Fenster geöffnet wurde? Falls ja, wie kann ich dann den Namen des Fensters auslesen?
Vielen Dank für Eure Hilfe!
Gruß
Uwe
Das sollte so gehen (den jeweiligen Klassennamen müsstest du herausfinden, unter NT 4.0 ist es „ConsoleWindowClass“):
Function HowManyClassInstances(Optional ClassName As String = "ConsoleWindowClass")
Dim hwnd As Long, Lg As Long, s As String, Cnt As Integer
hwnd = GetDesktopWindow()
hwnd = GetWindow(hwnd, GW\_CHILD)
Cnt = 0
Do While hwnd 0
s = String(255, 0)
Lg = GetClassName(hwnd, s, Len(s)) ' Class holen
If Lg \> 0 Then
If left(s, Lg) = ClassName Then Cnt = Cnt + 1
End If
hwnd = GetWindow(hwnd, GW\_HWNDNEXT)
Loop
HowManyClassInstances = Cnt
End Function
Reinhard
Hallo Reinhard,
vielen Dank für Deine Hilfe. Habe allerdings noch ein Problem mit den leider in Deinem Beispiel fehlenden
Declare Function GetDesktopWindow Lib "???" ...
Declare Function GetWindow Lib "???" ...
...
Kannst Du mir weiterhelfen? Gibt es irgendwo im Netz eine Quelle, in der ich diese Deklarierungen für VB nachlesen kann?
Mit der Microsoft SDK komme ich leider nicht ganz klar.
Viele Grüße
Uwe
Die Quelle für die API-Deklarationen ist der API-Viewer (gehört zu VB) oder das Buch von Dan Appleman (VB Programmer’s Guide of the Win32 API)…
Public Const GW\_CHILD = 5
Public Const GW\_OWNER = 4
Public Const GW\_HWNDFIRST = 0
Public Const GW\_HWNDNEXT = 2
Declare Function GetDesktopWindow Lib "user32" () As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Reinhard
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]