![]() |
Re: CreateDesktop, SwitchDesktop, ...
wobei dieses PowerToy imho einen kleinen Hau hat.
|
Re: CreateDesktop, SwitchDesktop, ...
Zitat:
Guß Stephan :dance: |
Re: CreateDesktop, SwitchDesktop, ...
Delphi-Quellcode:
zurück gehts u.a. so:
uses windows
var desktop : HDESK ; desktop := CreateDesktop('mydesk',nil,nil,0, DESKTOP_CREATEMENU or DESKTOP_CREATEWINDOW or DESKTOP_ENUMERATE or DESKTOP_HOOKCONTROL or DESKTOP_WRITEOBJECTS or DESKTOP_READOBJECTS or DESKTOP_SWITCHDESKTOP or GENERIC_WRITE, nil); SwitchDesktop(desktop); SetThreadDesktop(desktop);
Delphi-Quellcode:
Folgendes ist ist zu beachten :
var inputdesktop : HDESK ;
inputdesktop := OpenDesktop('default', 0, FALSE, DESKTOP_CREATEMENU or DESKTOP_CREATEWINDOW or DESKTOP_ENUMERATE or DESKTOP_HOOKCONTROL or DESKTOP_WRITEOBJECTS or DESKTOP_READOBJECTS or DESKTOP_SWITCHDESKTOP or GENERIC_WRITE); SwitchDesktop(inputdesktop); SetThreadDesktop(inputdesktop); 1. Wenn bereits Fenster auf dem normalen Desktop existieren, d.h. der Hauptthread Fenster besitzt. Dann muss ein neuer Thread gestartet werden, damit der Prozess auf dem neuen Desktop Fenster erzeugen kann. -> Das führt dazu, dass die VCL nur für den alten Desktop funktioniert und man nicht die VCL für den neuen Desktop verwenden kann. Lösung dazu: WinAPI verwenden oder ![]() 2. Das Testen auf der lokalen Maschine ist schwierig. Denn sobald ein Breakpoint nach dem Desktopwechsel auftritt, oder die Anwendung eine Exception wirft, kommt man nicht mehr zurück zu Delphi. Nur ein Beenden der Anwendung hilft (über telnet oder RPC von anderem PC mit taskkill bzw. pstaskkill) Besser ist es einen zweiten PC oder auch eine VM zu benutzen und Remotedebugging zu machen. 3. Ein neuer Desktop ist komplett von anderen Anwendungen abgeschirmt. Diese können dort nicht platziert werden. D.h. für virtuelle Desktops ala Powertoys funktioniert das nach meiner Meinung nicht. Man muss Anwendungen in diesem Desktop erneut starten. |
Re: CreateDesktop, SwitchDesktop, ...
Hi kann mir vllt. einer von euch bitte sagen wie ich dann in diesem neu erzeugten Desktop eine Anwendung starte?
Mit ShellExecute funktioniert es irgendwie nich |
Re: CreateDesktop, SwitchDesktop, ...
Zitat:
Du kannst dir üprigens beliebig viele virtuele Desktops einrichten... Ich hab 8 und brauche auch alle ^^ [/OT] |
Re: CreateDesktop, SwitchDesktop, ...
CreateDesktop erzeugt keinen "virtuellen Desktop". Wenn eine Anwendung mal auf dem Desktop ist, dann bleibt sie auch, bis alle GUI Handles zerstört wurden.
Mit "virtuellen Desktops" wird unter Windows der Trick verstanden, alle Fenster so zu verwalten, dass nicht immer alle sichtbar sind, sondern erst beim umschalten. |
Re: CreateDesktop, SwitchDesktop, ...
Zitat:
wenn ich jetzt zb bei einem button klick einen desktop erstellen will und bei einem anderen button klick wechseln will, wie mache ich das ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 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