AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi CreateDesktop, SwitchDesktop, ...
Thema durchsuchen
Ansicht
Themen-Optionen

CreateDesktop, SwitchDesktop, ...

Ein Thema von Dax · begonnen am 3. Okt 2004 · letzter Beitrag vom 6. Jul 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#11

Re: CreateDesktop, SwitchDesktop, ...

  Alt 12. Okt 2004, 12:17
wobei dieses PowerToy imho einen kleinen Hau hat.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#12

Re: CreateDesktop, SwitchDesktop, ...

  Alt 12. Okt 2004, 12:21
Zitat von nailor:
wobei dieses PowerToy imho einen kleinen Hau hat.
imho hat's nen großen Hau


Guß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#13

Re: CreateDesktop, SwitchDesktop, ...

  Alt 1. Feb 2007, 10:30
Delphi-Quellcode:
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);
zurück gehts u.a. so:
Delphi-Quellcode:
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);
Folgendes ist ist zu beachten :
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 KOL.

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.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
hannesgw

Registriert seit: 2. Mär 2009
Ort: Brandenburg
3 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#14

Re: CreateDesktop, SwitchDesktop, ...

  Alt 2. Mär 2009, 10:27
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
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#15

Re: CreateDesktop, SwitchDesktop, ...

  Alt 2. Mär 2009, 11:06
Zitat von Ultimator:
Ich weiß es nicht genau, aber ich könnte mir vorstellen, dass es so ist wie unter Linux mir den 4 Desktops...
[OT]
Du kannst dir üprigens beliebig viele virtuele Desktops einrichten... Ich hab 8 und brauche auch alle ^^
[/OT]
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#16

Re: CreateDesktop, SwitchDesktop, ...

  Alt 2. Mär 2009, 22:35
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.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
PsTo

Registriert seit: 16. Jun 2009
14 Beiträge
 
#17

Re: CreateDesktop, SwitchDesktop, ...

  Alt 6. Jul 2009, 23:52
Zitat von Dezipaitor:
Delphi-Quellcode:
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);
zurück gehts u.a. so:
Delphi-Quellcode:
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);
Wie wende ich das nun an ?
wenn ich jetzt zb bei einem button klick einen desktop erstellen will und bei einem anderen button klick wechseln will, wie mache ich das ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 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