Windows reboot/de
From Lazarus wiki
Jump to navigationJump to searchThe printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
│
Deutsch (de) │
Zurück zur Seite Code Beispiele.
Dieser Artikel beschäftigt sich mit der Windowsprogrammierung.
Die Prozedur beendet bzw. rebootet Windows.
{
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:
...
subExitWindows(Shutdown);
...