Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Form auf neuem Desktop (https://www.delphipraxis.net/85356-form-auf-neuem-desktop.html)

Telefonkabel 29. Jan 2007 19:00


Form auf neuem Desktop
 
Hy!
Ich würde gerne einen neuen Desktop über Createdesktop erstellen und in diesen sofort meine derzeitige Form abbilden.
Ist das möglich?
Wenn ja, wie?

MfG
Telekab.

Flips 29. Jan 2007 19:18

Re: Form auf neuem Desktop
 
Google, dein treuer Freund und Helfer verweist sogar auf die DP ;-)
DP-Thread
-------
Hier im Forum suchenCreatedesktop
Bei Google suchenCreatedesktop example
MSDN-Library durchsuchenCreateDesktop (Erste Referenz)

Telefonkabel 30. Jan 2007 20:03

Re: Form auf neuem Desktop
 
Danke, aber deine Links helfen mir nicht wirklich.
Auf all die Sachen bin ich schon vorher gestoßen.
Kann mir sonst einer erklären, wie das nun mit der Form funktioniert?

Olli 30. Jan 2007 21:02

Re: Form auf neuem Desktop
 
Ich bin mir relativ sicher, daß das mit echten Fenstern (was Forms einschließt) und echten Desktops nicht geht. Warum? Nunja, ein solches Objekt wie ein Fenster ist immer bei der "Geburt" mit dem Desktop (der ja Container für Fenster ist) assoziiert. Diese Assoziation kann zumindest auf dokumentiertem Wege nicht aufgehoben werden. Der korrekt Weg wäre also einen Thread deiner Anwendung mit dem Zieldesktop zu assoziieren und danach eine neue Instanz des Forms in diesem Thread zu erzeugen. Bei Vista kannst du, insofern es sich um einen Service handelt, aber noch auf andere Probleme stossen.

Telefonkabel 30. Jan 2007 21:23

Re: Form auf neuem Desktop
 
Und wie bewerkstellige ich das mit den 'Threads?
Es muss auch nicht sien, dass es genau diese Form ist, ich könnte auch, wenns garnicht anders geht ein Programm öffnen, also erst zum neuen Desktop und dann erst das Programm, aber das öffnet sich auch auf dem alten.
HIer gab es mal ien Bsp. mit einer Messagebox die sich auf dem neuen Desktop öffnen sollte. DAs hat z.B. auch bei mir nicht geklappt. Sie hat sich auf dem alten geöffnet.

Olli 30. Jan 2007 21:29

Re: Form auf neuem Desktop
 
Du benutzt echte Desktops? Also mit CreateDesktop? Dann kannst du mit SetThreadDesktop und SwitchDesktop arbeiten.

SwitchDesktop schaltet auf den erzeugten Desktop, SetThreadDesktop assoziiert einen Thread mit einem neuen Desktop. Aber Warnungen beachten.

Zitat:

The SetThreadDesktop function will fail if the calling thread has any windows or hooks on its current desktop (unless the hDesktop parameter is a handle to the current desktop).

Warning There is a significant security risk for any service that opens a window on the interactive desktop. By opening a desktop window, a service makes itself vulnerable to attack from the logged-on user, whose application could send malicious messages to the service's desktop window and affect its ability to function.

Telefonkabel 30. Jan 2007 22:02

Re: Form auf neuem Desktop
 
Heißt die Warnung, dass das ganze nicht funktioniert, wenn ich irgend ein Programm auf dem alten Desk offen hab?
Und kann mir jemand sagen, was Threads sind? Ich weiß, dass Threadproceduren Proceduren sind, die parallel laufen, aber was hat das mit diesem Thema zu tun?
Sorry, für die vielen Fragen.

Olli 30. Jan 2007 22:19

Re: Form auf neuem Desktop
 
Ooops, neue Frage neues Thema, bitte. Zu Threads solltest du dich am besten bei Luckies Win32-Tutorials und in anderen Quellen (PSDK, MSDN, DP, DF) schlaulesen. Ein Mindestmaß an Grundwissen sollten diejenigen die dir heir antworten nämlich voraussetzen können, wenn du eine solche Frage stellst ;)

Nein, es bedeutet nur, daß der aktuelle Thread keine Fensterobjekte besitzen darf. Keine Ahnung ob das besagt, daß du solche Objekte nur schließen mußt, oder ob der Thread auch nie welche besessen haben darf.

Telefonkabel 31. Jan 2007 13:50

Re: Form auf neuem Desktop
 
Wo finde ich denn Luckies Tutorial?
Und warum funktioniert der Quellcode von Luckie, der einen neuen Desk öffnet und dort eine Message anzeigen soll nicht?
(öffnet Desktop, zeigt aber die Message auf dem alten an)

MfG
Telekab

Matze 1. Feb 2007 06:20

Re: Form auf neuem Desktop
 
Michaels Tutorial findest du auf seiner Webseite.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 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