![]() |
Auf neuem Desktop Programm starten
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? |
Re: Auf neuem Desktop Programm starten
mit CreateProcess oder ShellexecuteEx müsste es möglich sein, den Desktop anzugeben.
Btw wo gibst du bei Shellexecute den Handle des Desktops an? :gruebel: |
Re: Auf neuem Desktop Programm starten
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:
Was ist daran falsch?
[...]
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); [...] |
Re: Auf neuem Desktop Programm starten
Delphi-Quellcode:
Da solltest du dir nochmal die Reihenfolge genauer anschauen. Dein FillChar überschreibt den Wert den du gerade erst in si.lpDesktop geschrieben hast.
si.lpDesktop := pchar(newdesk);
FillChar(si, SizeOf(si), 0); 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 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