'Shutdown' in Delphi Ausführen

Hi,

gibt es auch die möglichkeit den DOS Befehlt „shutdown -s“ für Computer Herunterfahren in Delphi auszufüren?
Danke im voraus für die Hilfe.

Gruß
Robin

Hallo Robin,

shutdown.exe ist ein Programm und kann wie jedes andere Programm mit ShellExec aufgerufen werden, siehe vorheriger Task. Ausserdem kommen dafür die WinAPI-Funktionen WinExec oder CreateProcess infrage.

Man braucht aber shutdown.exe überhaupt nicht: viel einfacher geht es mit ExitWindows oder besser ExitWindowsEx.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke für die Hilfe
Danke für deine Hilfe.

Gruß
Robin

Hi Reinhard.

Man braucht aber shutdown.exe überhaupt nicht: viel einfacher
geht es mit ExitWindows oder besser ExitWindowsEx.

Ich bin zwar nicht der Ursprungsposter, aber diese Befehle hatte ich vor einiger Zeit mal ausprobiert (mit Windows XP). Aber ich habe es irgendwie nicht so ganz geschafft, dass das passiert, was ich will. Kannst du mal ein kleines Beispiel zeigen, was einfach nur den Rechner runterfährt?

Danke,

Sebastian.

so „viel einfacher“ ist es denn doch nicht mit ExitWindows, denn unter nt-systemen muss man sich evtl. erstmal die rechte dafür beschaffen, hier die funktion die ich nutze:

function MyWindowsShutdown(AForce: Boolean): Boolean;
var
 hToken: THandle;
 tp: TTokenPrivileges;
 h,
 Flag: DWord;
begin
 flag:=EWX\_SHUTDOWN;
 if (Win32Platform = VER\_PLATFORM\_WIN32\_NT) then begin
 flag:=EWX\_POWEROFF;
 OpenProcessToken(GetCurrentProcess, TOKEN\_ADJUST\_PRIVILEGES, hToken);
 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);
 end;
 
 if AForce then flag:=flag or EWX\_FORCE;
 Result:=ExitWindowsEx(flag, 0);
end;
2 Like

Hi.

so „viel einfacher“ ist es denn doch nicht mit ExitWindows,
denn unter nt-systemen muss man sich evtl. erstmal die rechte
dafür beschaffen,

Das hatte ich auch so in der Doku gelesen, nur nicht rausgefunden, wie man das macht.

hier die funktion die ich nutze:

Danke.

Sebastian.

Hi,

gibt es auch eine möglichkeit den Rechner neu zu Starten? Danke schon mal im Voraus.

Robin

na einfach flag EWX_REBOOT benutzen :wink: