![]() |
Rechner Herunterfahren geht nicht
Meine Programm soll den PC Runterfahren, tut es aber nicht es beendet sich zwar aber der PC bleibt an.
Hier der Code ![]()
Delphi-Quellcode:
if Buffer='SHUTDOWN' then
Begin ExitWin(EWX_SHUTDOWN); Close; End; |
AW: Rechner Herunterfahren geht nicht
Hallo,
ich nutz folgenden Code um runterzufahren, etc., und das ohne Probleme.
Delphi-Quellcode:
Aufruf:
function ExitWindows(RebootParam: Longword): Boolean;
//mögliche RebootParam: //EWX_SHUTDOWN or EWX_FORCE = shutdown //EWX_REBOOT or EWX_FORCE = reboot //EWX_LOGOFF or EWX_FORCE = logoff // //EWX_FORCE - Die aktiven Prozesse werden zwangsweise und ohne Rückfrage beendet. var TTokenHd : THandle; TTokenPvg : TTokenPrivileges; cbtpPrevious : DWORD; rTTokenPvg : TTokenPrivileges; pcbtpPreviousRequired : DWORD; tpResult : Boolean; const SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; begin If Win32Platform = VER_PLATFORM_WIN32_NT then begin tpResult := OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TTokenHd); If tpResult then begin tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TTokenPvg.Privileges[0].Luid); TTokenPvg.PrivilegeCount := 1; TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; cbtpPrevious := SizeOf(rTTokenPvg); pcbtpPreviousRequired := 0; If tpResult then AdjustTokenPrivileges(TTokenHd, false, TTokenPvg, cbtpPrevious, rTTokenPvg, pcbtpPreviousRequired); end; end; Result := ExitWindowsEx(RebootParam, 0); end;
Delphi-Quellcode:
//Benutzer abmelden
ExitWindows(EWX_LOGOFF or EWX_FORCE) //Windows neu starten ExitWindows(EWX_REBOOT or EWX_FORCE) //Windows herunterfahren ExitWindows(EWX_SHUTDOWN or EWX_FORCE) |
AW: Rechner Herunterfahren geht nicht
Danke jetzt gehts Force musste noch dazu
|
AW: Rechner Herunterfahren geht nicht
Wobei Force zu Datenverlust führen kann, siehe Doku... Denn da wird WM_QUERYENDSESSION nicht aufgerufen und Programme ggf. abgeschossen.
|
AW: Rechner Herunterfahren geht nicht
Seit WIN7 gibt es immer mal Situationen, das manche sich manche Programme einfach nicht beenden wollen, ich habe deshalb die Lösungen:
Ich sende erstmal ohne Force und lasse mein Programm offen und starte einen Timer von 30sec ist mein programm noch da, weil irgendwer das Runterfahren verhindert, sende ich nochmals mit Force :thumb: |
AW: Rechner Herunterfahren geht nicht
Und wer garantiert dir, dass Windows dein Programm zu allerletzt beenden möchte?
|
AW: Rechner Herunterfahren geht nicht
Man könnte es ja auch erst einmal mit EWX_FORCEIFHUNG ($00000010) versuchen.
|
AW: Rechner Herunterfahren geht nicht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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