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.