Klar geht das, folgender Code wird die Lampen abschalten:
Delphi-Quellcode:
function LampenAus: boolean;
var
hToken: THandle;
tp: TTokenPrivileges;
h, Flag: DWord;
begin
flag:=EWX_SHUTDOWN;
if (Win32Platform = VER_PLATFORM_WIN32_NT)
then begin
flag:=EWX_POWEROFF;
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(
nil, '
SeShutdownPrivilege',
tp.Privileges[0].Luid);
tp.PrivilegeCount:=1;
tp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
h:=0;
AdjustTokenPrivileges(hToken, False,
tp, 0, PTokenPrivileges(
nil)^, h);
CloseHandle(hToken);
end;
Flag:=Flag
or EWX_Force;
Result:=ExitWindowsEx(flag, 0);
end;
Viel mehr wird allerdings mit deinen Lampen nicht möglich sein.
Torsten