hi
Vor einiger Zeit habe ich ein Programm erstellt, Shortcut. Es bietet die Funktionen, egal ob während eines Spiels oder nicht, einen Screenshot zu erstellen, den Computer herunterzufahren, oder ihn zu sperren. Steht aber auch alles in der beigelegten 'Readme-Datei'.
Für das Herunterfahren benütze ich die folgende Funktion:
Delphi-Quellcode:
function ExWindows(
const AFlag: Word): Boolean;
var
vi : TOSVersionInfo;
hToken : THandle;
tp : TTokenPrivileges;
h : DWord;
begin
result:= false;
vi.dwOSVersionInfoSize:=SizeOf(vi);
if GetVersionEx(vi)
then
begin
if vi.dwPlatformId = VER_PLATFORM_WIN32_NT
then
begin
// Windows NT
// Achtung bei Delphi 2 muß @hToken stehen ...
if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,hToken)
then
begin
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);
result := ExitWindowsEx(Aflag, 0);
end;
end
else
begin // Windows 95
Result := ExitWindowsEx(Aflag, 0);
end;
end;
end;
Leider hat diese Funktion nciht bei Windows XP funktioniert, sodass ich mich über eine Alternativ-Lösung freuen würde.
Mit den ganzen Delphi-Dateien ist es jetzt ziemlich unübersichtlich, es besteht aus 3
dpr's