Thema: Delphi Problem beim Shutdown

Einzelnen Beitrag anzeigen

FreakyF

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

Problem beim Shutdown

  Alt 8. Nov 2007, 18:50
Hallo!

Wie manche vielleicht schon von meinem anderen Beitrag wissen, versuche ich gerade mein erstes Shutdown-Programm zu schreiben.
Ich will die Idee von folgender Seite übernehmen: Link
Leider klappt die Umsetzung bei mir gar nicht

Hier mein Programm (soll erst später grafisch werden):

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

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
  { TODO -oUser -cConsole Main : Hier Code einfügen }
end.
Hier meine Fehlerliste:

Zitat:
[Pascal Fehler] Project1.dpr(10): E2003 Undefinierter Bezeichner: 'TOSVersionInfo'
[Pascal Fehler] Project1.dpr(12): E2003 Undefinierter Bezeichner: 'TTokenPrivileges'
[Pascal Fehler] Project1.dpr(13): E2003 Undefinierter Bezeichner: 'DWord'
[Pascal Fehler] Project1.dpr(17): E2066 Operator oder Semikolon fehlt
[Pascal Fehler] Project1.dpr(19): E2003 Undefinierter Bezeichner: 'GetVersionEx'
[Pascal Fehler] Project1.dpr(21): E2029 'THEN' erwartet, aber Bezeichner 'dwPlatformId' gefunden
[Pascal Fehler] Project1.dpr(25): E2003 Undefinierter Bezeichner: 'OpenProcessToken'
[Pascal Fehler] Project1.dpr(25): E2003 Undefinierter Bezeichner: 'GetCurrentProcess'
[Pascal Fehler] Project1.dpr(25): E2003 Undefinierter Bezeichner: 'TOKEN_ADJUST_PRIVILEGES'
[Pascal Fehler] Project1.dpr(27): E2003 Undefinierter Bezeichner: 'LookupPrivilegeValue'
[Pascal Fehler] Project1.dpr(27): E2066 Operator oder Semikolon fehlt
[Pascal Fehler] Project1.dpr(27): E2066 Operator oder Semikolon fehlt
[Pascal Fehler] Project1.dpr(38): E2003 Undefinierter Bezeichner: 'ExitWindowsEx'
[Pascal Fehler] Project1.dpr(41): E2029 '.' erwartet, aber ';' gefunden
Mein zweites Problem ist, dass ich nicht weiß, wie ich die Funktion in Hauptprogramm aufrufen kann.
Wo und wie muss ich den Parameter Flag EWX_Shutdown setzen?


Vielen vielen Dank für eure Hilfe
  Mit Zitat antworten Zitat