VB-Homepage Tipp 312

ermitteln, ob das eigene Programm den Focus hat

Es kann schon von Interesse sein, zu wissen, ob das eigene Programm auch das ist, mit dem der User gerade arbeitet, es also das aktive Programm ist.

Zum Beispiel könnte man fortlaufende Programmaktionen beenden oder den Intervall erweitern, wenn das Programm nicht das aktive ist, schaut sich die Auswertung ja keiner an oder aber Sie senden ein Meldefenster oder oder oder, wie immer kann ich gar nicht so schief um die Ecke denken, wie Sie das für sich einsetzbar machen.

Für unser Demoprojekt bauen Sie auf eine Form ein Labelobjekt (Label1) und einen Timer (Timer1).

Geben sie nun folgenden Code in die entsprechenden Events.
Allgemein/Deklarationen
Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Allgemein/GetFGWTitle
Private Function GetFGWTitle() As String

Dim lngHWnd As Long, lngTextLen As Long
Dim strBuffer As String

'Handle des aktiven Fensters
lngHWnd = GetForegroundWindow()

lngTextLen = GetWindowTextLength(lngHWnd)
strBuffer = String$(lngTextLen + 1, 0)
lngTextLen = GetWindowText(lngHWnd, strBuffer, Len(strBuffer))
strBuffer = Left$(strBuffer, lngTextLen)
GetFGWTitle = strBuffer

End Function

Timer1_Timer
If GetFGWTitle() = "VB-Homepage" Then                    'Text Modifizieren
  Label1.Caption = "Hurra ich bin das aktive Fenster"
Else
  Label1.Caption = "Warum arbeitet den keiner mit mir."
End If

Das ganze Geheimnis liegt im Ermitteln des Titelleistentextes der aktiven Anwendung. Liegt dieser vor, so muß er nur noch mit dem Titelleistentext der eigenen Anwendung verglichen werden um zu wissen, ob das eigene Programm das aktive ist, also den Focus besitzt.


Tipp-Download

Quelle :

Zurück zur Übersichtsseite