2 Stimmen

Wie bringe ich mein Fenster nach einem DDE-Ereignis nach vorne?

Bei einem DDE-Ereignis lädt mein Programm eine Datei ein und sollte in den Vordergrund springen. Ich habe verwendet

show;

Es scheint nur zu funktionieren, wenn ich das Fenster ausgeblendet habe.

Also fügte ich hinzu

bringtofront;

Dies hat wieder funktioniert, wenn es ausgeblendet, geschlossen, minimiert oder im Infobereich war, aber nicht, wenn es gerade unter einem anderen Fenster war.

Ich habe sogar einige hacky Sachen wie

windowstate:=wsminimized;
windowstate:=wsnormal;

versucht, um es zu zwingen, angezeigt zu werden, aber ohne Erfolg. Ich weiß, dass der Code läuft, da ich Ausgaben auf beiden Seiten dieses Blocks und keine bedingten Anweisungen habe, in denen er stecken bleiben könnte.

2voto

devio Punkte 36064

Hast du versucht SetForegroundWindow und/oder SetActiveWindow? Siehe auch MSDN-Informationen zu diesem Thema.

1voto

Bob Moore Punkte 6498

SetForegroundWindow funktioniert nicht immer. Tatsächlich ist es heutzutage ziemlich unwahrscheinlich, dass es funktioniert, weil Anwendungen den Fokus nicht erfassen sollen, sie können ihn nur abgeben. Microsoft versucht seit Jahren, Anwendungen daran zu hindern, den Eingabefokus zu stehlen. Lesen Sie die Kommentare zu diesem Blog-Eintrag von Raymond Chen für etwas Hintergrundwissen.

Also, wenn Sie die Vordergrund-App selbst sind, können Sie SetForegroundWindow auf eine andere App setzen und alles wird in Ordnung sein. Wenn Sie nicht die Vordergrund-App sind, ist die einzige wahrscheinliche Reaktion wahrscheinlich, dass eine Taskleisten-Schaltfläche anfängt zu blinken.

Nur um ein wenig Verwirrung zu stiften, ist das genaue Verhalten Windows-Version-abhängig, also hängt das, was passiert, davon ab, welche Windows-Art Sie verwenden - sie haben schon lange damit herumexperimentiert :-).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X