Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
ExitWindowsEx(EWX_SHUTDOWN, 0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ExitWindowsEx(EWX_REBOOT, 0);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ExitWindowsEx(EWX_LOGOFF, 0);
end;
end.
Wie du vielleicht in nahezu allen Threads zu ExitWindowsEx gesehn haben könntest, hat ExitWindowsEx einen Rückgabewert, welchen man auswerten sollte und wie im
MSDN (das ist das, wo die Beschreibung zu solchen Windowsbefehlen drinsteht) geschrieben steht, bekommt man über GetLastError im Fehlerfall auch noch einen genaueren Grund, warum es nicht ging.
ExitWindowsEx
GetLastError
SysErrorMessage
ShowMessage
oder statt SysErrorMessage und ShowMessage gleich ein
RaiseLastOSError
Und schon hättest du gleich gewust, warum bei dir der Befehl nicht geht.
PS: Man muß sich nicht nur die nötigen Privilegien freischalten ... diese Privilegien dürfen auch nicht vom Administrator deaktiviert wurden sein, sonnst kann man sie ja garnicht aktivieren.