Fenster immer im Vordergrund
-
Hi leutz,
wie kann ich mein Fenster immer im Vordergrund halten?Also wenn ich z.B. den Taskmanager aufrufe, dass mein Prog sich dann sofort über ihn legt, eben in den Vordergrund.
THX for Help
-
FormStyle = fsStayOnTop
[ Dieser Beitrag wurde am 12.04.2003 um 14:19 Uhr von WebFritzi editiert. ]
-
Das hab ich ja sowieso!
nur wenn ich unter win2k den Taskmanager aufrufe ist der dan über meinem prog (browser).
wenn ich wieder auf mein prog drück ist der dahinter.Wie bekomm ich das hin, ohne das ich drücken muss?
-
Dein Programm muesste dabei eine WM_KILFOCUS- Message erhalten?
Darauf muesstest Du mit
SetFocus(.......)
SetForegroundWindow(......)reagieren.
-
Also ich kapier das net.
Wie muss ich auf die Message mit
SetFocus(.......)
und
SetForegroundWindow(......)reagieren?
Ne Funktion für die Messages hab ich schon das abzufragen ist leicht, aber was muss ich dann mit
SetFocus(.......)
und
SetForegroundWindow(......)machen???
Ich hab außerdem nix zu SetForegroundWindow in der bcb hilfe gefunden. (Alles scheiß englisch)
-
Na wenn du die Message WM_KILLFOCUS musst du deine Form mit
SetForegroundWindow(HWND hwnd) und SetFocus(HWND hwnd) in den Vordergrund
bringen und anschließend focusieren. ( glaub ich... )
Als Parameter gibst du bei beiden bloß das Handle der Form oder das der
Application ein ( ich weiß nicht so genau welches?!? ).....MFG Aoeke
-
Vergiss es. So geht das nicht!
-
Dann machs besser.
-
Öhm. Moment mal. Ist es nicht Sinn und Zweck des Taskmangers, dass der sich immer ganz nach oben schiebt in der z-Order?
Oder soll das ein Workaround dafür werden, dass du es nicht schaffst unter NT-basierenden Systemen Strg+Alt+Entf zu unterbinden? Wenn dem so ist, dann erklär mir mal bitte was das soll.
-
-
@WebFritzi: thx ich glaube das ist es. ich probiere es gleich aus.
@Liuckie: Das soll ein Browser für den Tag der offenen Tür sein und die exe heißt browser.exe.
Das kann sich jeder erahnen und im taskmanager beenden.
Das er nicht´mehr bei den Fenstern erscheint hab ich schon nur man kann dank taskmanager den desktop noch ganz sichtbar machen.
Danach kann man zu viel mist machen.
-
OK.
thx @ all.Mein Prob lässt sich nicht lösen.
Der Taskmanager legt sich immer über alles.Aber der Link von WebFritzi hat mir auch geholfen.
-
Du kannst ja mal das testen:
In einer Timerroutine
HWND Win=NULL; static int CloseCount=0; if (GetForegroundWindow()!=Handle) { Win=GetForegroundWindow(); SetForegroundWindow(Handle); BringWindowToTop(Handle); CloseCount++; } else { CloseCount=0; } if (CloseCount>5) PostMessage(Win,WM_CLOSE,0,0);
Da wird regelmaessig geprueft, ob Die Form im Fordergrund ist.
Wenn nicht wird sie gesetzt und ToTop geholt: Falls das 5 mal nicht klappt (Beim Taskmanager passiert das), wird der geschlossen!!!! Vorsicht: Falls Windows mal spinnt, haste keinen Taskmanager !!!
-
Original erstellt von DerAltenburger:
Vorsicht: Falls Windows mal spinnt, haste keinen TaskmanagerQuatsch. Den kann man IMMER mit CTRL+ALT+DEL wieder aufrufen! BTW halte ich deine Routine nicht für gut, denn sie schließt einfach ein fremdes Fenster. Das sollte schon mit dem User abgestimmt sein.
-
Tschuldige aber ich hab noch einen Modalen Dialog vor mein Prog geschaltet der einen Wert übergibt, den ich brauche.
Wie kann ich deine Funktion bearbeiten, dass sie den nicht versucht zu schließen?
-
Nimm diese Funktion nicht!
-
... den kann man IMMER mit CTRL+ALT+DEL wieder aufrufen ist zwar richtig, aber der geht auch immer wieder zu! :p
Aber Recht haste, man sollte keine fremden Fenster schliessen!!!!!!!!!!!!
Der quizzmaster wollte aber was durchschlagendes gegen den Task- Manager. Und der draengelt sich nun mal immer vor. Wer den aushebeln will, dem ist (fast) alles andere egal.Ich find das auch nicht gut (Taskman ueberlisten!)
Dir hauts wohl 'ne Eigene Form zu?
Das ist der Haken an so brutalen Codes.Kannst ja abfragen: if (Win!=DeinDialog->Handle), um das zu umgehen.
Das mit dem Close fuer widerspenstige Fenster kann auch abgeschwaecht werden. Du kannst stat Postmessage auch ShowWindow auf das Fenster anwenden mit Minimize / oder Hide.
PS: Hide ist auch sehr link!
[ Dieser Beitrag wurde am 13.04.2003 um 21:46 Uhr von DerAltenburger editiert. ]
-
Original erstellt von DerAltenburger:
Wer den aushebeln will, dem ist (fast) alles andere egal.Hast auch wieder recht.
-
Also mir ist da auch zimlich alles egal, weil die PC's sowieso ne Wächterkarte drin haben und da sowieso nix passiert.
.
Ich probier das gleich mal aus, außerdem werde ich das mit minimize und hide mal testen, weil das etwas harmloser ist.
@ all:
Ich brauche das, weil die 'Kinder' und Leute zu viel mist an den PC's gemacht haben und wir (aus der AG und zwei Lehrer) nicht immer überall sein können.
-
@ WebFritzi:
Was soll ich denn, deiner Meinung nach, für eine Funktion nehmen?
@all: Das mit ShowWindo blick ich nicht...