Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Always StayOnBack? (https://www.delphipraxis.net/74173-always-stayonback.html)

eisblock 29. Jul 2006 15:09


Always StayOnBack?
 
Ich weiß, es gibt hier in der DP schon einige Threads zu dem Thema,
aber die CreateParams-Methode funktioniert bei mir irgendwie nicht.

Ich habe folgendes gemacht:
- Die Desktopsymbole ausgeblendet
- Eine Form erstellt, die ein paar Schieberegler und Felder beinhaltet,
bsnone und eine definierte TransparentColor hat.

Kann mir jemand weiterhelfen?
MfG Jonathan

Luckie 29. Jul 2006 15:19

Re: Always StayOnBack?
 
Zitat:

Zitat von eisblock
Kann mir jemand weiterhelfen?

Eventuell, wenn du uns verrätst, was du eigentlich vor hast.

fwsp 29. Jul 2006 15:20

Re: Always StayOnBack?
 
To Luckie:
Heut keine Glaskugel dabei? :wink:

eisblock 29. Jul 2006 15:21

Re: Always StayOnBack?
 
Ich möchte meinen Desktop so umgestalten, dass dessen Inhalt in mehrere Gruppen unterteilt wird. Zu diesem Zweck muss ich quasi einen Desktopersatz schreiben.
Mein Problem ist, dass das Fenster nicht im Hintergrund bleibt.
Sobald ich es wieder aktiviere, ist es im Vordergrund.
MfG Jonathan

fwsp 29. Jul 2006 15:25

Re: Always StayOnBack?
 
Dann musst du eben in regelmäßigen Abständen prüfen, welches Fenster den Fokus hat und gegebenfalls den Fokus ändern.

eisblock 29. Jul 2006 15:27

Re: Always StayOnBack?
 
Hm ja das wäre zwar eine Methode, aber zugleich auch unsaubere Programmierung..
Gibt es keine bessere Methode?
Wie macht es denn Microsoft mit dem Desktop?
Ist das Privileg nur dem Desktop vorbehalten?
MfG Jonathan

fwsp 29. Jul 2006 15:28

Re: Always StayOnBack?
 
Der Desktop ist ja eigentlich nur ein Ordner mit speziellen Rechten.
Das sollte also nachzubilden sein.

eisblock 29. Jul 2006 15:34

Re: Always StayOnBack?
 
Ja aber ich will ja nicht den Inhalt des Ordners modifizieren, (was btw. auch nicht das Verhalten des Desktops verändern würde, der ja von irgendeinem Windows-Prozess gesteuert wird), sondern selbst ein Programm schreiben, dass sich immer über den Desktop, aber unter alle anderen Programme legt.
MfG Jonathan

fwsp 29. Jul 2006 15:36

Re: Always StayOnBack?
 
Hab ich schon verstanden.

eisblock 29. Jul 2006 15:39

Re: Always StayOnBack?
 
Hm danke erstmal für die Hilfe mit den Handles :thumb: , aber ich hatte irgendwie gehofft, dass es noch eine bessere Methode dafür gibt..

arbu man 29. Jul 2006 15:39

Re: Always StayOnBack?
 
Ich denke mal erstmal brauchst du das control handle des Desktopscontrol und dann benutze Windows.SetParent() und setze deine form auf den desktop

eisblock 29. Jul 2006 15:42

Re: Always StayOnBack?
 
Hm zurzeit ist das Handle des Desktops bei mir 65682, aber kann sich das auch ändern?

arbu man 29. Jul 2006 15:45

Re: Always StayOnBack?
 
Ja natürlich

eisblock 29. Jul 2006 15:49

Re: Always StayOnBack?
 
Okay wäre ja auch zu leicht gewesen... :wall:

arbu man 29. Jul 2006 15:52

Re: Always StayOnBack?
 
Aber man kann es immer mit Hier im Forum suchenFindWindow o.ä. wieder finden

Christian Seehase 29. Jul 2006 15:56

Re: Always StayOnBack?
 
Moin eisblock,

mit MSDN-Library durchsuchenGetDesktopWindow solltest Du das Handle aber erhalten (ich hoffe es ist das richtige ;-))
Dies sollte gültig sein, solange nicht der explorer Prozess beendet wird, der beim Rechnerstart gestartet wird, und diesen darstellt.

Wenn Du also den Explorer nicht per Taskmanager abschiesst, und dann neu startest, sollte das Auslesen des Handles zu Programmstart genügen.
(Falls nicht gerade irgendeine Aktion auf dem Rechner den Explorer beendet und neu startet, was auch mal vorkommen kann).

Luckie 29. Jul 2006 16:00

Re: Always StayOnBack?
 
Es wäre wohl einafcher eine eigene Shell zu programmieren in diesem Fall.

eisblock 29. Jul 2006 16:05

Re: Always StayOnBack?
 
Also ich hab das jetzt so gemacht:
Windows.SetParent(GetTopWindow(0),GetDesktopWindow );
allerdings funktioniert das nicht.
Wenn ich hingegen den derzeitigen Handle vom Desktop statt GetDesktopWindow einsetze, funktioniert es.
Allerdings habe ich den Handle auch nur von einem anderen Programm, dass den Handle des derzeit fokussierten Fensters ausgibt.
P.S.: wo sollte ich denn obige Anweisung am geschicktesten einsetzen?
lG Jonathan

turboPASCAL 29. Jul 2006 17:02

Re: Always StayOnBack?
 
Guck mal, gestern veröffentlicht. Das Programm ist auf den Desktop gepappt und bleibt da. Klick


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz