Fenster in den Vordergrund holen
-
SetWindowPos(hWnd, HWND_TOP, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
-
Also hinwechseln funktioniert schonmal, aber zurück geht (noch) nicht. Auch eine MessageBox die "Systemmodal" ist, klappt nicht. Die blitzt nur kurz auf und kann auch angeklickt werden, wird aber durch die Applikation sofort überzeichnet. Wenn ich einen Breakpoint setzte, kommt aber der Debugger in den Vordergrund, also wie macht der das?
Ja, ich arbeite unter Win2000, funktionieren soll es aber später möglichst überall.
Bye, TGGC
-
Normalerweise darfst du imho nicht als Anwendung im Hintergrund einer anderen Anwendung (die gerade im Vordergrund ist) den "Vordergrund-Status" klauen. Aber vielleicht klappt's mit SetForegroundWindow (Remarks beachten) - allerdings kann auch hier die Anwendung im Vordergrund dies verhindern.
Aber wenn es der Debugger kann muss dies auf jeden Fall möglich sein[ Dieser Beitrag wurde am 30.06.2003 um 14:47 Uhr von flenders editiert. ]
-
Wie ich bereits sagte, diese Funktion (allein) hilft nicht.
-
void winSetForegroundWindow(HWND hWnd) { HWND currentTop; currentTop = GetForegroundWindow(); AttachThreadInput(GetWindowThreadProcessId(currentTop, NULL), GetCurrentThreadId(), TRUE); AttachThreadInput(GetWindowThreadProcessId(ghWnd, NULL), GetCurrentThreadId(), TRUE); SetForegroundWindow(hWnd); AttachThreadInput(GetWindowThreadProcessId(ghWnd, NULL), GetCurrentThreadId(), FALSE); AttachThreadInput(GetWindowThreadProcessId(currentTop, NULL),GetCurrentThreadId(), FALSE); } /* winSetForegroundWindow() */
-
Ich dachte Vollbild DX-Anwendungen hätten einen exklusiven Zugriff auf den Bildschrim?
-
nö! wer hat das gesagt?
-
Ich habe es jetzt so gelöst, das ich einen "Alt" Tastendruck per keybd_event simuliere. Dann funktioniert SetForegroundWindow nämlich, wie ich beim stöbern in der MSDN herausgefunden habe. Falls jemand noch einen eleganteren Weg hat (werde mal rolleyes vorschlag probieren), ich bin jederzeit offen für Vorschläge.
Bye, TGGC
-
Die Version von rolleyes funktioniert! Werde diese wohl verwenden.
Bye, TGGC
-
Original erstellt von RPD:
nö! wer hat das gesagt?ich meine, dass mal in einem eBook über DX gelesen zu haben.
-
Original erstellt von Bigor:
ich meine, dass mal in einem eBook über DX gelesen zu haben.Exklusiven Zugriff kann man aber nur so lange haben, wie man im Vordergrund ist.
-
Da ich gerade vor dem gleichen Problem stehe, dachte ich mir ich greife das Topic mal wieder auf und hauche ihm neues Leben ein:
Also ich habe das Problem, daß meine Anwendung einen weiteren Dialog öffnet der sich in den Vordergrund schieben und den aktiven Fokus haben soll. Leider kommt es da bei Win2k ja zu Problemen, also arbeite ich mit AllowSetForegroundWindow() und dann mit SetForegroundWindow()...
Leider scheinen andere Applikationen diesen Vorgang zu stören. Der Code von Rolleyes wollte bei mir nicht so ganz klappen leider bzw. frage ich mich woher die Variable ghWnd kommt. Vielleicht öffnet mir ja jemand die Augen.
[EDIT]
Kommando zurück:
Die Variante von Rolleyes funzt und bislang trat mein Problem nimmer auf!
*zeigt die Daumen hoch*
Vielen Dank
[/EDIT]