Hallo,
danke für deine Antwort,
ffgorcky!
ffgorcky hat folgendes geschrieben : |
| Sprich: Du möchtest Dein Programm bei Start gerne maximieren, aber dann alle anderen davorschieben - oder? |
Ja, und außerdem möchte ich, dass mein Programm auch im Hintergrund bleibt, wenn man darauf klickt.
ffgorcky hat folgendes geschrieben : |
| Ich meine das geht, indem Du eben (nachdem Du Dein Programm maximiert hast) alle anderen laufenden Anwendungen nacheinander ansprichtst und sie ihnen (auch nacheinander!) den Satus "OnTop" (aber nicht "StayOnTop"!) gibst. |
Wie meinst du das? Ich hab mal versucht, alle Fenster der Reihenfolge nach abzuklappern und
BringWindowToTop auszuführen, aber ich weiß nicht, wie ich das erste Fenster bekommen soll:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Handle := GetNextWindow(GetDesktopWindow, GW_HWNDFIRST); while IsWindow(Handle) do begin Handle := GetNextWindow(Handle, GW_HWNDNEXT); BringWindowToTop(Handle); end; |
Der Parameter
GW_HWNDFIRST will irgendwie nicht so richtig, im Beispiel kommt der Fehler "Es sind keine weiteren Dateien vorhanden" (Code 18
) - ist ja auch logisch, denn
GetDesktopWindow liefert
High(Word) zurück. Dabei darf auf den übergebenen Handle-Parameter doch gar nicht geachtet werden, schließlich will ich doch das erste Fenster!
Außerdem: Wenn dann mal alle Fenster vor dem eigenen sind - das eigene kommt ja sofort wieder in den Vordergrund, sobald ich darauf klicke. Ich könnte zwar die ganze Prozedur wieder durchführen, wenn das eigene Fenster in den Vordergrund kommt, aber das würde stark flackern etc - sehr unschön
Grüße,
Yogu