Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1176to1180
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

Prüfen ob Fenster extistiert

Prüfen ob Fenster extistiert
Sebastian
Hallo... ich nochmal...
Ich nutze den unten aufgeführten Code um ein Fenster in den Vordergrund zu bringen.
Ist das Fenster nicht geöffnet würde ich gerne den Code beenden, mit eine msgBox "Bitte Progamm öffnen"
an welcher stelle muß ich da was einfügen im Code, vor allem was?
Vielen Dank
Sebastian
Private Function GetWindowInfo(ByVal hwnd&, STitel$, Optional booVisible As Boolean = True) As  _
Long
Dim Result&, Style&, Title$
'Darstellung des Fensters
Style = GetWindowLong(hwnd, GWL_STYLE)
Style = Style And (WS_VISIBLE Or WS_BORDER)
'Fensetrtitel ermitteln
Result = GetWindowTextLength(hwnd) + 1
Title = Space$(Result)
Result = GetWindowText(hwnd, Title, Result)
Title = Left$(Title, Len(Title) - 1)
'prüfen ob Fenster Sichtbar
If (Style = (WS_VISIBLE Or WS_BORDER)) Or booVisible = False Then
If Title Like "*" & STitel & "*" Then
GetWindowInfo = hwnd
Exit Function
End If
End If
GetWindowInfo = 0
End Function

Sub FensterSuchen()
Dim hwnd As Long
Dim STitel As String
STitel = "MeineFenstertitel"
hwnd = GetDesktopWindow()
hwnd = GetWindow(hwnd, GW_CHILD)
GetWindowInfo hwnd, STitel, True
Do While hwnd 0
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
If GetWindowInfo(hwnd, STitel, True) = hwnd Then
ShowWindow hwnd, iNormal 'maximieren
SetForegroundWindow hwnd 'aktivieren
Dim Rec As RECT
GetWindowRect GetForegroundWindow, Rec
End If
Loop
starte_makro
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Prüfen ob Fenster extistiert
14.09.2010 15:38:51
JogyB
Hallo Sebastian,
jetzt schreib mal das was Du gepostet hast in ein Modul einer neuen Arbeitsmappe und probier aus, ob irgendwas passiert... merkst Du was? Wie sollen wir Dir helfen, wenn Du einen offensichtlich unvollständigen Code postest? Naja egal, schwer zu finden war der Originalcode ja nicht.
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 GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hWnd As Long, ByVal wIndx As _
Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" _
Alias "GetWindowTextLengthA" (ByVal hWnd As Long) _
As Long
Private Declare Function GetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal hWnd As Long, ByVal lpString _
As String, ByVal cch As Long) As Long
Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2
Const GW_CHILD = 5
Const WS_VISIBLE = &H10000000
Const WS_BORDER = &H800000
Const GWL_STYLE = (-16)
Function sucheFenster(suchName As String, Optional ByVal teilSuche As Boolean = False, _
Optional ByVal grossKlein As Boolean = False) As Boolean
Dim hWnd As Long
Dim fensterTitel As String
' gross/Kleinschreibung unwichtig?
If Not grossKlein Then suchName = LCase(suchName)
' Nur nach Teil des Namens suchen
If teilSuche Then suchName = "*" & suchName & "*"
'Einstieg
hWnd = GetWindow(GetWindow(GetDesktopWindow(), GW_CHILD), GW_HWNDFIRST)
'Alle vorhandenen Fenster abklappern
Do
fensterTitel = GetWindowInfo(hWnd)
If Not grossKlein Then fensterTitel = LCase(fensterTitel)
If fensterTitel Like suchName Then
sucheFenster = True
Exit Function
End If
hWnd = GetWindow(hWnd, GW_HWNDNEXT)
Loop Until hWnd = 0
End Function
Private Function GetWindowInfo(ByVal hWnd As Long) As String
Dim Result As Long
Dim Title As String
Dim Style As Long
Style = GetWindowLong(hWnd, GWL_STYLE)
Style = Style And (WS_VISIBLE Or WS_BORDER)
'Title des Fenster auslesen
Result = GetWindowTextLength(hWnd) + 1
Title = Space$(Result)
Result = GetWindowText(hWnd, Title, Result)
Title = Left$(Title, Len(Title) - 1)
If Style = (WS_VISIBLE Or WS_BORDER) Then
GetWindowInfo = Title
End If
End Function

Das ist jetzt reduziert aus das, was Du brauchst. Mit der Funktion sucheFenster kannst Du abfragen, ob ein Fenster mit diesem Titel aktiv ist.
Gruß, Jogy
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige