Thema: Delphi Problem beim Shutdown

Einzelnen Beitrag anzeigen

FreakyF

Registriert seit: 7. Nov 2007
22 Beiträge
 
#5

Re: Problem beim Shutdown

  Alt 8. Nov 2007, 20:14
Zitat von DeddyH:
Zitat von FreakyF:
Jetzt weiß ich leider noch nicht, wie ich die Funktion richtig aufrufen kann.
Und wo kann ich den Parameter Flag "EWX_Shutdown" setzen?
Z.B. so:
ExWindows(EWX_SHUTDOWN or EWX_FORCEIFHUNG);
Vielen Dank für die super Hilfe!

Hier nochmal der komplette Quellcode:

Delphi-Quellcode:
program shutdown;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows;

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;


begin
  ExWindows(EWX_SHUTDOWN or EWX_FORCEIFHUNG);
end.
  Mit Zitat antworten Zitat