Wenn Sie auf ein Programm außerhalb Ihrer Anwendung
zugreifen möchten, benötigen Sie entweder das Handle oder den Namen des Fensters.
Einen Tipp wie Sie das Handle zu allen laufenden Tasks ermitteln können,
gab es ja auch schon.
Hier aber soll dies nur mit dem aktiven Fenster geschehen, denn oftmals ist es ja
entscheidend, welches Fenster gerade aktiv ist, die anderen ist eher unbekannt.
Und so ganz nebenbei können Sie damit auch die Fülle des notwendigen Sourcecodes um
einiges verringern.
Für einen Test benötigen Sie wie immer ein neues Projekt, dem Sie zwei Labelobjekt
(Label1 und Label2) und einen Timer (Timer1) spendieren.
In den Abschnitt
Allgemein/Deklarationen geben Sie folgende API-Deklarationen an.
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
als nächstes und zugleich letztes, bekommt der Timer noch die Aufgabe, das jeweils aktive
bzw. im Vordergrund liegende Fensterhandle zu ermitteln und im Label auszugeben.
Dim Fenster As Long Fenster = GetActiveWindow()
label1 = Fenster
Fenster = GetForegroundWindow()
label2 = Fenster
Das war es auch schon, lediglich Ihrem Timer müssen Sie natürlich noch einen Intervall
vergeben. Wundern sie sich nicht, das beide Funktionen den selben Fensterhandle ermitteln.
Logischerweise ist meist das Fenster das im Vordergrund liegt auch das Aktive. Lediglich
bei einem OnTop Fenster könnte ich mir vorstellen, daß die Angaben unterschiedlich sind.
Der Tipp an sich bringt Ihnen sicher nicht all zu viel, aber ohne die Angabe des
Fensterhandles kommen Sie bei Projekten, zbsp. Taskhandling (verstecken,beenden) nicht
weiter. |