[Delphi]KP in Delphie - PC neu starten

hasch

Lt. Commander
Registriert
Sep. 2004
Beiträge
1.067
Hallo,
wir haben gerade at School Delphie mit der Konsolenprogrammierung. Finde das eigentlich super genial, obwohl es eigentlich so primitiv ist, aber nach PHP mit der vielen Auswahl wohl mal eine gelunge Abwechslung.
Meine Frage dazu:

Gibt es eine Funktion, die es ermöglicht den PC neu zus starten oder herunter zu fahren?

Danke.
 
AW: KP in Delphie - PC neu starten

Hallo hasch,

z.B.

Rundll32.exe user,ExitWindows
Beendet Windows.

Rundll32.exe user,ExitWindowsExec
Startet Windows neu.

Siehe hier:

http://www.cumba.de/web1/comp_rundll.htm

Falls Du das per Software machen willst geht das ebenso.

MfG

Arnd
 
Zuletzt bearbeitet:
AW: KP in Delphie - PC neu starten

OK, vielen Dank!
 
So einfach ist es leider nicht.

Versuch mal das hier: (Code ist von Delphi-Library.de)

Code:
uses
  Windows;

{...}

type
  TShutdownWindowsType = (swtShutdown, swtShutdownPowerOff, swtRestart, swtLogoff);

function ShutdownWindows (aType: TShutdownWindowsType): Boolean;

{...}

function ShutdownWindows (aType: TShutdownWindowsType): Boolean;

const
  cSE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
  cFlagValue: Array [TShutdownWindowsType] Of UINT = (
      EWX_SHUTDOWN, EWX_SHUTDOWN or EWX_POWEROFF, EWX_REBOOT, EWX_LOGOFF
    );

var
  OSVersionInfo: TOSVersionInfo;
  hToken: THandle;
  hProcess: THandle;
  TokenPriv: TTokenPrivileges;
  ReturnLength: DWORD;

begin
  Result := False;

  // Die Windowsversion holen
  OSVersionInfo.dwOSVersionInfoSize := SizeOf (OSVersionInfo);
  if not GetVersionEx (OSVersionInfo) then
    Exit;

  // Prüfen ob Windows NT
  if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
    begin
      hProcess := GetCurrentProcess;
      if not OpenProcessToken (hProcess, TOKEN_ADJUST_PRIVILEGES, hToken) then
        Exit;

      if not LookupPrivilegeValue (nil, cSE_SHUTDOWN_NAME, TokenPriv.Privileges[0].Luid) then
        Exit;

      TokenPriv.PrivilegeCount := 1;
      TokenPriv.Privileges [0].Attributes := SE_PRIVILEGE_ENABLED;

      if not AdjustTokenPrivileges (
          hToken, False, TokenPriv, 0,
          PTokenPrivileges (nil)^, ReturnLength
        )
      then
        Exit;

      CloseHandle (hToken);
    end;

  ShutdownWindows := ExitWindowsEx (cFlagValue [aType], $FFFFFFFF);
end;

Naja... und im Vergleich zu Delphi ist PHP eher ziemlich primitiv ;)
 
Ok , kann sein das das ExitWindows nur als Admin funktioniert. Ausprobiert habe ich es nicht.

MfG

Arnd
 
7H3 N4C3R schrieb:
So einfach ist es leider nicht.

Versuch mal das hier: (Code ist von Delphi-Library.de)

Naja... und im Vergleich zu Delphi ist PHP eher ziemlich primitiv ;)
Ich habe ja auch nicht Delphie gesagt, sondern Konsolenprogrammierung und da finde ich schon, dass dem PHP einiges voraus ist (obwohl man das eigentlich garnicht vergleichen kann, denn es sind genau die entgegengesetzten Programmierrichtungen)
 
hasch schrieb:
(... denn es sind genau die entgegengesetzten Programmierrichtungen)
Höh?

Du kannst mit nem Delphi Konsolenprog auch einfach HTML auf die Standardausgabe schreiben, was dann auf's gleiche rauskommt. ;)



Hat der Code denn funktioniert?
 
7H3 N4C3R schrieb:
Höh?

Du kannst mit nem Delphi Konsolenprog auch einfach HTML auf die Standardausgabe schreiben, was dann auf's gleiche rauskommt. ;)



Hat der Code denn funktioniert?
Ich habs noch nicht probiert, habe mir den Code aber abgespeichert, da ich für nen Kumpel mal nen tolles Tool schreiben will und wenn der nicht hört, dann wird der PC herunter gefahren :D

Danke Jungs!
 
Mit Delphi kann man aber echte Windows, Unix Programme schreiben. Mit PHP nicht. Deswegen würde ich sagen, es sind zwei Verschieden Sprachen. PHP ist ja ne Skriptsprache..
 
merv schrieb:
Mit Delphi kann man aber echte Windows, Unix Programme schreiben.

Unix-Programme? Das geht nur mit Kylix. Aber das wird nicht mehr weiterentwickelt :(

André
 
Zurück
Oben