AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf neuem Desktop Programm starten

Ein Thema von Telefonkabel · begonnen am 15. Feb 2007 · letzter Beitrag vom 19. Feb 2007
Antwort Antwort
Telefonkabel

Registriert seit: 15. Jan 2007
94 Beiträge
 
#1

Auf neuem Desktop Programm starten

  Alt 15. Feb 2007, 20:39
Hy!
Ich würde gerne auf einem neuen Desktop ein Programm starten.
Den Desktop lege ich über createdesktop an, doch wenn ich dann shellexecute ausfüre, selbst mit dem neuen Desktop als Handle, dann öffnet er das Programm nur auf dem alten Desktop.
Kann mir da jemand helfen?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Auf neuem Desktop Programm starten

  Alt 15. Feb 2007, 21:51
mit CreateProcess oder ShellexecuteEx müsste es möglich sein, den Desktop anzugeben.

Btw wo gibst du bei Shellexecute den Handle des Desktops an?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Telefonkabel

Registriert seit: 15. Jan 2007
94 Beiträge
 
#3

Re: Auf neuem Desktop Programm starten

  Alt 19. Feb 2007, 17:29
Danke, ich hab nun versucht es über CreateProcess zu lösen, doch habe ich das Problem, dass ich nicht weiß wo ich im Prozeduraufruf den neuen Desktop angeben muss. Gibts für diese Prozedur ein gutes deutsches Tutorial?

MfG
Telekab.

Delphi-Quellcode:
[...]
SetThreadDesktop(NewDesk);
    Windows.SwitchDesktop(NewDesk);
    si.lpDesktop := pchar(newdesk);
    FillChar(si, SizeOf(si), 0);
    si.cb := SizeOf(si);
    si.dwFlags := STARTF_USESHOWWINDOW;
    si.wShowWindow := SW_NORMAL;
    FillChar(pi, SizeOf(pi), 0);
    CreateProcess(Nil, PChar('c:\windows\notepad.exe'), Nil, Nil, False,
                   CREATE_DEFAULT_ERROR_MODE or CREATE_NEW_CONSOLE or
                   NORMAL_PRIORITY_CLASS, Nil, nil, si, pi);
[...]
Was ist daran falsch?
  Mit Zitat antworten Zitat
Lasse2002

Registriert seit: 29. Nov 2004
79 Beiträge
 
RAD-Studio 2009 Pro
 
#4

Re: Auf neuem Desktop Programm starten

  Alt 19. Feb 2007, 22:51
Delphi-Quellcode:
si.lpDesktop := pchar(newdesk);
FillChar(si, SizeOf(si), 0);
Da solltest du dir nochmal die Reihenfolge genauer anschauen. Dein FillChar überschreibt den Wert den du gerade erst in si.lpDesktop geschrieben hast.

CREATE_NEW_CONSOLE solltest du nur für Konsolenanwendungen verwenden. Notepad gehört da nicht dazu.

SetThreadDesktop(NewDesk) funktioniert übrigens nur, wenn dein Process noch kein Fenster erzeugt hat.
Lasse
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:18 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