So wechsle ich den Desktop (so das Zeischnen über GetDC(0) funktioniert und erzeugte TForms auch auf diesem Desktop landen)
Delphi-Quellcode:
var
lDesktop,
lStationNew : Cardinal;
begin
lStationNew := OpenWindowStation('WinSta0', True, GENERIC_ALL);
if (lStationNew <> 0) then
begin
SetProcessWindowStation(lStationNew);
lDesktop := OpenDesktop('Default', DF_ALLOWOTHERACCOUNTHOOK, True, GENERIC_ALL);
if (lDesktop <> 0) then
begin
if SetThreadDesktop(lDesktop) then
fCouldSwitch := True;
CloseDesktop(lDesktop);
end;
CloseWindowStation(lStationNew);
end;