![]() |
Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Ich möchte verhindern, dass meine Form minimiert werden kann.
Das Icon in der Taskleiste kann ich ausblenden und den Knopf oben rechts deaktivieren. Auch [Win]+[M] ist recht einfach abzufangen. Bleibt noch die Tastenkombination [Win]+[D] und "Desktop anzeigen", die (so denke ich) intern das Gleiche machen. Soweit ich weiss, wird dabei ja der Desktop in den Vordergrund geholt. Ich müsste es also hinkriegen, dass meine Form noch weiter vorn ist ^^ Wie geht das? MfG Z4ppy PS (insbesondere an Luckie ^^): Ich will die Einwände gar nicht hören :D |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Hi,
viele Spiele sperren die Windows-Taste auf Wunsch. ![]() ![]() |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Naja, das wär dann ein bisschen Holzhammer, denn auch so nützliche Kombinationen wie [Win]+[E] oder [Win]+[R] wären nicht mehr möglich, sollen es aber noch bleiben ^^
Auch soll das generelle Verhalten von [Win]+[D] nicht verändert werden, sondern nur meine Form da bleiben ^^ MfG Z4ppy |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Ok, das Minimieren hab ich jetzt hingekriegt:
Delphi-Quellcode:
:)
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOOWNERZORDER or SWP_NOACTIVATE);
Nun ist es aber so, dass Win 7 ja das schöne Feature hat, dass man mit der Maus auf den Button ganz unten rechts gehen kann und dann wird der Blick auf den Desktop frei. Logischerweise sollte da mein Fenster angezeigt werden, wird es aber nicht :? Ausserdem möchte ich das Fenster nicht topmost haben... Es soll halt immer aufm Desktop sein, aber nicht vor allen anderen Fenstern :wall: Ich müsste also obigen Code ausführen, wenn Win+D oder der Button unten rechts (Win 7) bzw. die Verknüpfung "Desktop anzeigen" (XP, Vista?) gedrückt wird. Ersteres wäre über einen Tastatur-Hook möglich, das andere wird wohl schwieriger :( Irgendwelche Ideen? MfG Z4ppy |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Bearbeite in dem von Muhkuh ersten geposteten Link die Funktion "MsgFilterFunc" nach deinen Bedürfnissen!
|
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Vielleicht erklärst du mal, was das soll, dass der Benutzer nicht mehr an seinen Desktop drankommen soll. Mir erschließt sich der Sinn nicht.
|
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Zitat:
|
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Der Themenersteller bat speziell dich Michael, das nicht zu hinterfragen. Solange nicht offensichtlich Schadsoftware o.ä. entwickelt wird, finde ich so eine Bitte auch in Ordnung. Die Diskussion verläuft sich sonst komplett (sieht man ja nun) und bis eine Lösung da ist zieht sich das hin.
Hier weiß fast jeder, dass es meistens nicht gut ist, das Standardverhalten von Win zu ändern, aber Win macht das z.T. selbst. Guck z.B. die Win7-Desktop-Gadgets an (oder wie man die nennt). Da gibt's eine analoge Uhr, CPU- und RAM-Anzeige und vieles mehr. Das verhält sich genau so, wie es hier gewünscht ist. Bei Win+D minimiert sich alles, aber die Gadgets bleiben im Vordergrund, auch über den Desktop-Icons. Beim Fahren mit der Maus über das Feld unten rechts ist es genauso. Es gibt da sicher bessere Wege, die von Win7 offiziell unterstützt werden, aber wenn es auch unter XP & Co. laufen soll, muss man es manuell machen. |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Das Post scriptum habe ich übersehen. Aber warum sagt er zum Beispiel nicht, dass er so ein Gadget programmieren will, dass auch unter XP läuft? Und wenn es harmlos ist, könnte er es ja sagen. Also ich verstehe die Heimlichtuerei nicht. Würde bestimmt auch die Hilfsbreitschaft fördern, wenn man weiß um was es geht. Aber meinte wegen.
|
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Eigentlich ist es doch ersichtlich, was er haben möchte:
Das Fenster soll quasi als Bestandteil des Desktops angezeigt werden. Wenn man also den Desktop anzeigen lässt, dann muss auch das Fenster noch sichtbar sein (alle anderen weg) Es gibt da eine Möglichkeit, das Fenster auf Desktopebene zu platzieren (statt HWND_TOPMOST HWND_DESKTOP ??? ) Dann liegt das (meine ich) sogar unter den Symbolen auf dem Desktop |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Vielleicht wäre es möglich das ganze ganau so zu machen wie der Explorer, praktisch auf der selben Ebene. Ich kann mir allerdings vorstellen, dass Windows nur einen "Explorer" zulässt.
Edit: nicht möglich, da die windows-taste vom explorer gehandelt wird. d.h. er setzt sich selbst in den Vordergrund wenn die Tasten gedrückt werden. Man müsste also überwachen wann der explorer im vordergrund ist und dann das eigene Fenster nach oben setzen. Wie wäre das abprüfen mit einem Timer? |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Und wenn drei, vier Explorer geöffnet sind?
|
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
@luckie: es geht um das fenster mit der id 00000001 das ist das Desktop fenster, wo auch das hintergrundbild mit drin ist.
Die Id hab ich übrigens von Property Edit. Das Fenster mit einem eigenen Prog herauszusuchen sollte also nicht allzu schwierig sein. |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Die ID ist aber nicht eindeutig. Jeder Programmierer kann nach gut Dünken IDs für seine Fenster vergeben. Aber da der Desktop Explorer als erster Explorer Prozess gestartet wird, müsste er von allen Explorer Instanzen, die Instanz mit der niedrigsten ID sein.
|
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
So, nun bin auch ich wieder wach :D
Um dich zu beruhigen, Luckie: ja, mein Programm soll ein Gadget werden und zwar eines, das aus Winamp den aktuellen Song ausliest und dann auf dem Desktop anzeigt. Die Lösungen über Rainmeter oder gar die Windows Sidebar gefallen mir nicht... @lbccaleb: Auf [Win]+[D] könnte ich damit reagieren, ja. Nicht aber auf Desktop anzeigen... Ausserdem ist es ja so, dass durch erneutes Drücken von [Win]+[D] der Effekt wieder aufgehoben wird. Aber nicht nur dann, sondern auch, wenn ein beliebiges Fenster wiederhergestellt wird. Wie soll ich denn bittesehr darauf reagieren können? :? @Sir Rufo: So etwas wie HWND_DESKTOP habe ich nicht gefunden. Laut ![]() HWND_BOTTOM (das Fenster gerät dann aber hinter den Desktop, vermute ich - bei meinem Versuch wurde es jedenfalls gar nicht mehr angezeigt) HWND_NOTOPMOST (dann ist das Fenster zwar nicht ganz vorne, wird aber bei [Win]+[D] versteckt) HWND_TOP (selbes Problem wie bei HWND_NOTOPMOST) HWND_TOPMOST (siehe oben) Möglicherweise könnte ich direkt auf den Desktop zeichnen. Aber das finde ich nicht eine allzu hübsche Lösung... @WM_CLOSE: Mit dem Timer überprüfen, ob der Desktop im Vordergrund ist und dann das Fenster auf TOPMOST stellen, ansonsten auf NOTOPMOST? Ja, wäre wohl eine Möglichkeit... Aber wirklich schön ist das auch nicht und ich kann mir nicht vorstellen, dass die Windows Sidebar das so macht :? Btw: Ich hab natürlich bereits via Google nach "Delphi Gadget" usw. gesucht, leider findet die Tante da aber immer nur Anleitungen, wie man mit Delphi Windows Sidebar Gadgets oder Google Gadgets basteln kann :? MfG Z4ppy |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Zitat:
|
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
du könntest ein child-Fenster des Desktops erzeugen, das hab ich grad mit einem edit ausprobiert (Code aus dem thread
![]()
Delphi-Quellcode:
guck dir am besten dazu die nonVCL themen an
CreateWindowEx(WS_EX_CLIENTEDGE, 'edit', 'Edit2', WS_VISIBLE or WS_CHILD or ES_PASSWORD, 128, 408, 121, 21, $40314{hier das richtige handle einfügen}, 0, HINSTANCE, nil);
PS: ich habe es mit SetWindowLong usw probiert und bin gescheitert. (Das muss aber nichts heissen) |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
@Luckie:
Ich hab schlicht nicht dran gedacht das zu erwähnen :stupid: :lol: Nun, hast du auch noch etwas zum Thema beizutragen? @WM_CLOSE: Oder via SetParent (user32.dll) direkt den Parent setzen? Müsste ja wohl auch funktionieren, wenn denn die Methode geht. MfG Z4ppy |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Das hab ich probiert, hat bei mir nicht funktioniert,ich konnte die anwendung immernoch minimieren, und hab es nach 30 min aufgegeben.
Du kannst es ja mal selbst probieren. Viel glück.:thumb: PS: Muss das prog auch auf "alten" BS oder wäre es nicht einfacher gleich ein Gadget zu proggen? |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Und wo liegt das Problem bei den Gadgets? - Nun, du brauchst einen Webservice (z.B. IdHTTPServer) und kannst dein Gadget nach Windows-Standards entwickeln. Das Gadget macht intern AJAX-Abfragen auf deinen HTTPServer und dein Progrämmchen, welches still und leise im Hintergrund mitläuft, holt sich die Daten von Winamp.
Einziges Problem dürfte das Schließen sein, weil Desktop Gadgets meiner Meinung nach dafür ausgelegt sind, 100% der Zeit auf dem Desktop zu verbringen. Bernhard |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Das wäre doch zu einfach :D
Aber wenn ein Gadget das kann, dann muss das doch auch mit ner Standalone App gehen :? MfG Z4ppy |
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Achso, und wenn man noch weiter darüber nachdenkt, hat Winamp ein funktionierendes Plugin-System. Du könntest dir also noch den Webserver-Prozess sparen und dieses in einem Winamp-Plugin lösen. Leider weiß ich nicht, ob es Plugins gibt, die die ganze Zeit mitlaufen.
Bernhard PS: Zitat:
|
AW: Minimieren bei [Win]+[D] bzw. "Desktop anzeigen" verhindern...
Danke für den Hinweis, es soll aber eine Standalone App sein...
Ich habe nun noch etwas interessantes gefunden: Zitat:
Und natürlich, wie man die Message abfangen und darauf reagieren kann :D Und wie man es hinkriegt, dass das Fenster sichtbar bleibt, wenn man da bei Win7 mit der Maus auf den Knopf unten rechts geht... Das ist fast noch wichtiger als [Win]+[D] ^^ MfG Z4ppy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz