Einzelnen Beitrag anzeigen

HansHans

Registriert seit: 29. Aug 2007
12 Beiträge
 
#11

Re: Überprüfen, ob die Arbeitsstation gesperrt ist

  Alt 30. Aug 2007, 11:02
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;
  Mit Zitat antworten Zitat