Wiki-KopieMirror

Dies ist ein Mirror des Wikis von pascal.chat. Bearbeiten, Verlauf und Anmeldung finden dort statt.

Windows reboot/de

Zurück zur Seite Code Beispiele.\

Dieser Artikel beschäftigt sich mit der Windowsprogrammierung.
Die Prozedur beendet bzw. rebootet Windows.\

pascal
{
Bedeutung der Windowskonstanten:
EWX_LOGOFF
  Alle Prozesse des Benutzers werden beendet.
  Der Benutzer wird abgemeldet.

EWX_POWEROFF
  Fährt Windows herunter und setzt den Computer in den StandBy-Modus.
  (Die Hardware muss dies unterstützen)

EWX_REBOOT
  Fährt Windows herunter und startet es neu

EWX_SHUTDOWN
  Fährt Windows herunter

EWX_FORCE
  Beendet die Prozesse ohne Rückfrage

EWX_FORCEIFHUNG
  Beendet Prozesse mit vorheriger Nachfrage
}

  ...

uses
  SysUtils, Windows, Dialogs, ...;
  
  ...

const
  //Soft-Variante
  Logoff = EWX_LOGOFF or EWX_FORCEIFHUNG;
  StandBy = EWX_POWEROFF or EWX_FORCEIFHUNG;
  Reboot = EWX_REBOOT or EWX_FORCEIFHUNG;
  Shutdown = EWX_SHUTDOWN or EWX_FORCEIFHUNG;

  //Harte-Variante
  Logoff_F = EWX_LOGOFF or EWX_FORCE;
  StandBy_F = EWX_POWEROFF or EWX_FORCE;
  Reboot_F = EWX_REBOOT or EWX_FORCE;
  Shutdown_F = EWX_SHUTDOWN or EWX_FORCE;
  
  ...
  
implementation
  
  ...
  
function funExitWindows(lwdRebootParam: longword): boolean;
var
  hToken: THandle;
  TokenPvg1: TTokenPrivileges;
  TokenPvg2: TTokenPrivileges;
  wrdGroesseTokenPvg2: DWORD;
  wrdPcbtpPreviousRequired: DWORD = 0;
  blnRueckgabe: boolean;

begin
  
  Result := False;
  
  try
  
    blnRueckgabe := OpenProcessToken(GetCurrentProcess(),
      TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
  
    if blnRueckgabe = True then
    begin
      blnRueckgabe := LookupPrivilegeValue(nil, 'SeShutdownPrivilege',
        TokenPvg1.Privileges[0].Luid);
  
      TokenPvg1.PrivilegeCount := 1;
      TokenPvg1.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      wrdGroesseTokenPvg2 := SizeOf(TokenPvg2);
  
      if blnRueckgabe = True then
        Windows.AdjustTokenPrivileges(hToken, False, TokenPvg1,
          wrdGroesseTokenPvg2, TokenPvg2, wrdPcbtpPreviousRequired);
  
    end;
  
    Result := ExitWindowsEx(RebootParam, 0);
  
  except
    ShowMessage('Beim Herunterfahren von Windows ist ein Fehler aufgetreten');
  end;

end;
  
  ...

Beispiel für einen Aufruf der Prozedur:\

pascal
  ...
subExitWindows(Shutdown);
  ...

From the Free Pascal wiki, page "Windows reboot/de", as it stood on 2020-03-04 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Version 1, zuletzt geändert von WikiArchive .