Wie zu bestimmen, ob ein Prozess ist, der derzeit aktive / Vordergrund-Anwendung
Ich würde gerne Abfragen können einige Funktion und geben Sie eine Prozess-id oder Prozessname - sollte Es dann zurück true
oder false
auf, ob dieser Prozess in der Vordergrund-oder nicht.
So, d.h. die Abfrage für Firefox zurückkehren würde true
(denn jetzt bin ich in FireFox eingeben) und alles andere sollte zurück false
.
Ist das überhaupt möglich für jede Art von Anwendung (.net, java/swing, Reine c++/win32-ui)?
- Diese Frage ist nur für Windows.
Du musst angemeldet sein, um einen Kommentar abzugeben.
GetForegroundWindow und GetWindowThreadProcessId lassen sollten und Sie erhalten diese Informationen.
also, wenn Sie wissen, die pid nur überprüfen Sie es gegen eine Funktion wie diese:
Dieser Arbeit wird für jede Anwendung, die den Kern der Win32-Bibliothek auf einer Ebene - dies werde auch von Windows Forms -, WPF -, native Win32-Anwendungen, etc. Hinweis: dies werde nur funktionieren, für Anwendungen, die auf den Aufruf von desktop-und session - Sie können dies nicht verwenden, um zu bestimmen, wenn ein anderer Benutzer die Anwendung in den Vordergrund, zum Beispiel.
if (GetWindowThreadProcessId(hwnd, &pid)
Lesen sollteif (GetWindowThreadProcessId(hwnd, &foregroundPid)
. Wie es ist, Sie ' re vergleichen ein nicht initialisiertes DWORD-Wert, der die PID des Vordergrund-Fensters.