Einzelnen Beitrag anzeigen

Dezipaitor

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

Re: Programm auf eigenem "Desktop" ausführen

  Alt 1. Mär 2010, 22:23
Wenn du die VCL auf den neuen Desktop bewegen willst, dann musst du sie einfach beenden. Das sollte klappten, wenn ich mich nicht irre.

Delphi-Quellcode:
uses ..., Forms, ...;
begin
  Forms.Application.Free;
  ...
  SetThreadDesktop
  ...
  Forms.Application := TApplication.Create(nil);
  Forms.Application.Initialize;
  ...
end.
Ansonsten, ab SetThreadDesktop alles in einen Thread verlagern.
Du solltest das aber mit einer brandneuen VCL Anwendung testen, da weiter Units Hooks und Handles erstellen könnten, die das verhindern.

EDIT:
Wenn Thread gewählt, sollte man im Thread "Application" am Ende freigeben und dann
im Hauptprogramm das Application wieder neu erstellen (d.h. nachdem man auf den Thread gewartet hat). D.h. es sollte am Ende so sein, dass VCL im Hauptthread wieder läuft. Hatte deshalb mal ein Problem, das ich dadurch umgangen habe.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat