![]() |
Problem beim Shutdown
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: ![]() Leider klappt die Umsetzung bei mir gar nicht :wall: Hier mein Programm (soll erst später grafisch werden):
Delphi-Quellcode:
Hier meine Fehlerliste:
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. Zitat:
Wo und wie muss ich den Parameter Flag EWX_Shutdown setzen? Vielen vielen Dank für eure Hilfe :cheers: |
Re: Problem beim Shutdown
Es würde bestimmt schon einmal helfen, die Unit Windows in die uses-Klausel aufzunehmen.
|
Re: Problem beim Shutdown
Zitat:
Die Fehler sind alle weg. Jetzt weiß ich leider noch nicht, wie ich die Funktion richtig aufrufen kann. Und wo kann ich den Parameter Flag "EWX_Shutdown" setzen? Danke :-D |
Re: Problem beim Shutdown
Zitat:
Delphi-Quellcode:
ExWindows(EWX_SHUTDOWN or EWX_FORCEIFHUNG);
|
Re: Problem beim Shutdown
Zitat:
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. |
Re: Problem beim Shutdown
Zitat:
|
Re: Problem beim Shutdown
Zitat:
... hab ich im Forum vor ca. 10 Min. in einem anderen ![]() SCRaT P.S.: siehe auch ![]() |
Re: Problem beim Shutdown
Kurze Frage:
Weißt du was OpenProcessToken und AdjustTokenPrivileges machen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz