Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Programm immer auf dem Desktop anzeigen
Nova - Fr 09.02.07 02:01
Titel: Programm immer auf dem Desktop anzeigen
Hi zusammen,
ich schreibe mir selbst gerade ein kleines Programm womit ich hoffentlich meinen Kopf zusammenhalten kann
bedeutet, Termine eintragen, ToDo Listen, Telefonlisten und was nicht alles
Jetzt würde ich gerne ein kleines 200x200 Pixel großes Fenster auf meinem Desktop platzieren, welches die wichtigsten Sachen auf einen Blick anzeigt. Das Problem ist jetzt nur, wie kann ich es schaffen, dass dieses Fenster immer auf dem Desktop angezeigt wird, also so als ob es auf den Hintergrund gemalt ist... Wenn ich zB "Dekstop anzeigen" drücke, verschwindet mein Tool natürlich mit allen anderen. Das würde ich aber gerne verhindern.
Danke schonmal
Olli
Logikmensch - Fr 09.02.07 07:15
Du könntest ja auch statt auf eine 200x200 Bitmap direkt auf Deine Hintergrundgrafik zeichnen, die Du dann natürlich für Dein Desktop einstellen müsstest. Wie man "Desktop anzeigen" so umgeht, dass auch dann Dein Progrämmchen sichtbar bleibt, weiß ich leider auch nicht.
Ich habe das bei mir so gelöst, dass ich mir eine Verknüpfung auf meine Hintergrundgrafik ebenfalls mit aufs Desktop gelegt habe und wenn ich was ändern will, geht MS-Paint automatisch auf und dann male /schreibe ich meine Notizen dann einfach darauf.
Nova - Sa 10.02.07 15:41
Naja aber die Methode wäre ja nur bedingt interaktiv,
also mann könnte dann gar keine Textfelder/Buttons etc darauf packen.
DrRzf - So 11.02.07 03:58
versuchs mal mit
Formstyle := fsStayOnTop;
Jakob Schöttl - So 11.02.07 11:55
DrRzf hat folgendes geschrieben: |
versuchs mal mit
Formstyle := fsStayOnTop; |
nein, das bringt leider gar nichts - lies dir die Hilfe dazu durch - diese Eigenschaft ist für etwas anderes da (Programmintern).
jakobwenzel - So 11.02.07 12:27
Die Lösung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var wnd: HWND; begin timer1.Enabled:=false; wnd := FindWindow('Progman', 'Program Manager'); wnd := FindWindowEx(wnd, 0, 'SHELLDLL_DefView', nil); wnd := FindWindowEx(wnd, 0, 'SysListView32', 'FolderView');
if wnd <> 0 then begin parentwindow:=wnd; end; ShowWindow(Application.Handle,SW_HIDE); end; |
Dadurch wird das Fenster zum Unterfenster des Desktops (hört sich komisch an, is aber so), unbd der wird ja beim Desktop anzeigen noch angezeigt.
BorderStyle=bsNone ging zumindest bei mir danach aber nicht mehr.
Und die Position des Formulars bezieht sich danach auf den Monitor ganz oben links und nicht mehr auf den ersten.
Nova - Mo 19.02.07 19:36
Das funktioniert! Super danke!!!
Ich werde erstmal ein wenig mein Programm weiter schreiben und dann rausfinden, was genau mit deinem Code funktioniert.
Edit: bsNone funktioniert bei mir komischerweise trotzdem. Nichts worüber ich mich beschweren würde *g*
Nur komisch, dass es bei dir nicht klappt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!