Abfrage ob Programm im Vorder-/Hintergrund
-
Hallo!
Hab folgendes Problem.
Ich hab eine Anwenung, die z.b. hinter Firefox läuft, und bei einem bestimmten Ereigniss öffnet sich ein Formular das als Popup gedacht ist mit FormStyle fsStayOnTop. Wenn ich dieses nun schließe, dann ist mein Hauptformular aber auf einmal vor Firefox.Gibts da ne Lösung?
Danke.
-
Hi,
speicher den Fenstertitel des Browsers; aufrufen so:
LPCTSTR lpszAppName = NULL; // oder hier eintragen LPCTSTR lpWindowName = "C/C++ Forum :: Antwort schreiben - Opera"; HWND hWin = FindWindow(lpszAppName, lpWindowName); if (hWin != NULL) SetForegroundWindow(hWin);
mfg
kpeter
-
kpeter schrieb:
LPCTSTR lpszAppName = NULL; // oder hier eintragen LPCTSTR lpWindowName = "C/C++ Forum :: Antwort schreiben - Opera"; HWND hWin = FindWindow(lpszAppName, lpWindowName); if (hWin != NULL) SetForegroundWindow(hWin);
Gibt es auch eine Funktion 'IsForegroundWindow()' (oder ähnlich) ?
Also sozusagen eine Abfrage ob das Fenster den Fokus hat.--Edit--
Habe es gefunden.HWND MeinFenster = FindWindow(NULL, "Name des Fensters"); // Wobei Name für Application->Title bzw. Form->Caption steht if (MeinFenster) // wenn das Fenster gefunden wurde { if (GetForegroundWindow() == MeinFenster) { // MeinFenster ist im Vordergrund bzw. hat den Fokus } else { // MeinFenster ist nicht im Vordergrund bzw. hat keinen Fokus } }
--Edit²--
2 weitere Möglichkeiten:if (GetForegroundWindow() == Form1->Handle) { // eigene Anwendung ist im Vordergrund bzw. hat den Fokus }
if (GetForegroundWindow() == FindWindow(NULL, "Name des Fensters")) { // gesuchte Anwendung ist im Vordergrund bzw. hat den Fokus }
-CppWannaBee