Hallo,
@Ringli: joa, hast recht, und das result wurde auch nirgends zugewiesen. Die Funktion für die Sperrung gibt's bei mir unter Delphi5 nicht, deshalbhab ich sie, erstmal, weggelassen.
Hier also das Ergebnis:
Code:
function MyExitWindows (E: TExit; force: boolean): boolean;
var
vi: TOSVersionInfo;
flag: integer;
begin
if e = EW_Garnicht then
begin
result := true;
exit;
end;
flag := 0;
vi.dwOSVersionInfoSize:=SizeOf(vi);
GetVersionEx (vi);
if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then
GetShutdownPrivileges;
// die brauchen wir nur, wenn's mindestens Windows NT ist
if Force then
begin
if (vi.dwPlatformId = VER_PLATFORM_WIN32_NT) and
(vi.dwMajorVersion >=5) then
flag := EWX_FORCEIFHUNG
// geht ab Windows 2000
else // also entweder NT oder gar windows 95/98/ME
flag := EWX_FORCE;
end;
case e of
EW_herunterfahren: result := ExitWindowsEx (EWX_ShutDown or flag, 0);
EW_Ruhezustand: result := SetSystemPowerState (false, Force);
EW_Standby: result := SetSystemPowerState (true, Force);
EW_Abmelden: result := ExitWindowsEx (EWX_LOGOFF or flag, 0);
EW_Neustart: result := ExitWindowsEx (EWX_REBOOT or flag,0);
else
result := false;
end;
end;
Viele Grüße
Marco