habs jetzt mit OpenWindowStation und SetProcessWindowStation versucht.
Funtioniert auch soweit, nur wenn der Rechner mit installiertem Dienst gestartet wird, "hängt" er vor der Windows-Anmeldung mit blauem Bildschirm.
Hier der Code:
Delphi-Quellcode:
function TTimeService.IsWorkstationLocked: Boolean;
var
hDesktop : HDESK;
hStation : THandle;
ErrorCode : Integer;
begin
Result := false;
try
hStation := OpenWindowStation('winsta0',false,MAXIMUM_ALLOWED);
if hStation <> 0 then begin
if SetProcessWindowStation(hStation) then begin
hDesktop := OpenDesktop('default',0,false,DESKTOP_SWITCHDESKTOP);
if hDesktop <> 0 then begin
Result := not SwitchDesktop(hDesktop);
CloseDesktop(hDesktop);
end;
end;
CloseWindowStation(hStation);
end;
except
end;
end;