AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Einen prozess in anderen Desktop befördern ohne switch!
Thema durchsuchen
Ansicht
Themen-Optionen

Einen prozess in anderen Desktop befördern ohne switch!

Ein Thema von Neotracer64 · begonnen am 16. Jan 2006 · letzter Beitrag vom 13. Jun 2006
Antwort Antwort
Seite 2 von 3     12 3      
Neotracer64

Registriert seit: 27. Okt 2004
292 Beiträge
 
Delphi 7 Professional
 
#11

Re: Einen prozess in anderen Desktop befördern ohne switch!

  Alt 17. Jan 2006, 21:12
Zitat:
Ich dachte du startest die Programme immer selbst... dann kannst du bei CreateProcess auch angeben, in welchem Desktop das Programm ausgeführt werden soll.
Achso. Und ich war in dem Glauben, dass der Prozess, den ich starte "GetStartupInfo" am Anfang des Programms aufrufen muss um die TStartupInfo auch verarbeiten zu können.
  Mit Zitat antworten Zitat
FreewareFire

Registriert seit: 24. Sep 2003
51 Beiträge
 
Delphi 7 Professional
 
#12

Re: Einen prozess in anderen Desktop befördern ohne switch!

  Alt 12. Jun 2006, 17:42
Hallo zusammen!

Ich habe da ein kleines Problem... Wie verschiebe Ich meine Anwendung auf den aktiven Desktop? Alle bisherigen versuche das Programm auf den neuen Desktop zu setzen sind fehl geschlagen.

Also ich habe mein Programm das einen neuen Desktop anlegt... jetzt soll das Programm auch auf den neuen Desktop wechseln... Ich möchte aber nicht mit CreateProcess eine neue Instanz starten müssen. Ich möchte das Fenster einfach mit auf den Desktop verschieben. Aber wie?

Das Problem bei mir ist, dass nicht einmal das Beispiel (glaube von Luckie ist es) richtig zum laufen bekomme... Er erstellt zwar den neuen Desktop, switcht auch, aber er zeigt die MessageBox nicht auf dem neuen, sondern auf dem Default Desktop an! Ich suche jetzt seit 3 Tagen nach einer Lösung...

Bitte helft mir weiter!

Vielen Dank


Ralf
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Einen prozess in anderen Desktop befördern ohne switch!

  Alt 12. Jun 2006, 18:57
wenn du dir die bisherigen Beiträge duchgelesen hättest wüsstest du das dies nicht geht. Man kann einen Thread nur in einen anderen Desktop befördern wenn dieser keine referenzen (Fenster-Handles etc.) auf seinen aktuellen Desktop hat. Daraus folgt das ein Fenster somit auch nicht auf einen anderen Desktop verschoben werden kann. Nächstes mal bitte erst das bereits gepostete lesen damit wir nicht 5 mal die gleiche Frage innerhalb eines Themas schreiben müssen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
FreewareFire

Registriert seit: 24. Sep 2003
51 Beiträge
 
Delphi 7 Professional
 
#14

Re: Einen prozess in anderen Desktop befördern ohne switch!

  Alt 12. Jun 2006, 22:11
Danke für die schnelle Antwort... Das ist ja wohl sinnlos? Hättest du Dir mein Posting vorher mal richtig durchgelesen, wüsstest du, dass Ich bereits seit 3 Tagen nach einer Antwort suche... Und da werde Ich sicher nicht zum Spaß die Frage hier stellen... Ergo gelesen... Aber egal - und wenn du das erste Posting liest, stellst du fest, sofern Ich das richtig verstehe, da eben das eigene Programm sehr wohl switchen kann - siehe Angabe mit Beispielen die das wohl können... zum anderen gibt es Posts, in denen das wohl geht, allerdings nonVCL Versionen... Und es gibt einige Tools, die das letztlich auch machen (siehe Dexpot)... Tja, und jetzt? Wer also was weiß, Bitte postet doch mal was... auch Links sind Willkommen!


Vielen Dank an alle D-Praxis Leser!
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#15

Re: Einen prozess in anderen Desktop befördern ohne switch!

  Alt 13. Jun 2006, 08:16
Dann werde konkreter, beschreibe wie du was versucht hast und an welchem konkreten Problem du scheiterst (Fehlercode einer API, etc).
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Einen prozess in anderen Desktop befördern ohne switch!

  Alt 13. Jun 2006, 08:24
auch das eigene Programm kann keine Programme auf einen anderen Desktop befördern wenn der Thread referenzen auf den aktuellen Desktop hält (auch NonVCL nicht). Das Program Dexpot und viele andere auch arbeiten nicht mit Desktops sondern verstecken lediglich die Programme. Wenn du zum Beispiel ICQ auf einem anderen desktop hast und ICQ ein neues Fenster öffnet erscheint dieses egal auf welchem Desktop du dich befindest eben weil es keine richtigen Desktops sind sondern nur die Fenster ausgeblendet werden.

Man muss sich also entscheiden ob man mit richtigen Desktops arbeiten will (und somit die Programme auch in Ihrem desktop verbleiben) oder mit "virtuellen" Desktops und akzeptieren das es zu unerwünschten Effekten kommt weil die Fenster einfach nur ausgeblendet werden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
FreewareFire

Registriert seit: 24. Sep 2003
51 Beiträge
 
Delphi 7 Professional
 
#17

Re: Einen prozess in anderen Desktop befördern ohne switch!

  Alt 13. Jun 2006, 12:19
Ok, dass war das was ich wissen wollte - dachte Dexpot usw. nutzen auch CreateDesktop und Co.

Allerdings habe Ich da eine Idee gehabt: Klonen!? Also den Prozess klonen - dazu habe Ich in der MSDN das hier gefunden:

DuplicateHandle

Duplicates an object handle.
BOOL DuplicateHandle(
HANDLE hSourceProcessHandle,
HANDLE hSourceHandle,
HANDLE hTargetProcessHandle,
LPHANDLE lpTargetHandle,
DWORD dwDesiredAccess,
BOOL bInheritHandle,
DWORD dwOptions
);

hier der Link!

MSDN für DuplicateHandle

Wäre das evtl. eine Lösung? Allerdings krieg ich kein Beispiel hin. Vielleicht kann jemand mal ein kleines Prog basteln, dass ein duplikat der Anwendung erstellt...? Verstehe Ich doch richtig, dass diese Funktion diesen zweck erfüllen soll, oder? Irgendwo in den dwOptions oder so kann man glaube Ich den Desktop mit angeben!!! Dann würde er die Kopie ja im Desktop öffnen, oder?

Danke euch!
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#18

Re: Einen prozess in anderen Desktop befördern ohne switch!

  Alt 13. Jun 2006, 12:45
Zitat von SirThornberry:
Man muss sich also entscheiden ob man mit richtigen Desktops arbeiten will (und somit die Programme auch in Ihrem desktop verbleiben) oder mit "virtuellen" Desktops und akzeptieren das es zu unerwünschten Effekten kommt weil die Fenster einfach nur ausgeblendet werden.
Echte machen ja auch dann erst richtig Sinn, wenn sie mit anderen Credentials laufen ...
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#19

Re: Einen prozess in anderen Desktop befördern ohne switch!

  Alt 13. Jun 2006, 14:55
@FreewareFire: Ich beschränke mich mal auf ein einfaches "nein".

Warum sollten die anderen Desktopmanager so ein kompliziertes Versteckspiel verwenden, wenn es doch so einfach wäre?

Zitat:
The DuplicateHandle function duplicates an object handle.
Und nur das, nicht den Prozess oder sonstwas.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
FreewareFire

Registriert seit: 24. Sep 2003
51 Beiträge
 
Delphi 7 Professional
 
#20

Re: Einen prozess in anderen Desktop befördern ohne switch!

  Alt 13. Jun 2006, 16:08
Ok, Danke - wollte ja nur helfen... Schließlich ist das ja ein weit verbreitetes Problem...

Evtl. kommt irgendwann eine Lösung - Cya!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 19:48 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