AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Shutdown Befehl auf Windows 7
Thema durchsuchen
Ansicht
Themen-Optionen

Shutdown Befehl auf Windows 7

Offene Frage von "Luckie"
Ein Thema von XBladerX · begonnen am 5. Jul 2011 · letzter Beitrag vom 10. Jul 2011
 
doctor-x

Registriert seit: 29. Apr 2007
41 Beiträge
 
#18

AW: Shutdown Befehl auf Windows 7

  Alt 10. Jul 2011, 15:40
Hi,

ich benutze dafür fogenden code:

Code:
unit WHSystem;

interface

uses
  Classes, SysUtils, Windows, mmSystem;

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;

type
  ExitWindowsParameter = longword;

function ExitWindows (RebootParam : longword) : boolean;
//zB.: "EWX_REBOOT or EWX_FORCE" zum Neustarten
//Es können auch dierekt die Konstanten aus dieser Unit verwendet werden!
//Parameter      Wirkung

//EWX_LOGOFF     Alle Prozesse des Benutzers werden beendet, danach wird der Benutzer abgemeldet.

//EWX_POWEROFF   Fährt Windows herunter und setzt den Computer in den StandBy-Modus,
//                sofern von der Hardware unterstützt.

//EWX_REBOOT     Fährt Windows herunter und startet es neu.

//EWX_SHUTDOWN   Fährt Windows herunter.

//EWX_FORCE      Die aktiven Prozesse werden zwangsweise und ohne Rückfrage beendet.

//EWX_FORCEIFHUNG Windows 2000/XP: Die aktiven Prozesse werden aufgefordert, sich selbst zu beenden und
//                müssen dies bestätigen. Reagieren sie nicht, werden sie zwangsweise beendet.

implementation

function ExitWindows (RebootParam : longword) : boolean;
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 Windows.AdjustTokenPrivileges(TTokenHd, False, TTokenPvg, cbtpPrevious, rTTokenPvg, pcbtpPreviousRequired);
    end;
  end;
  Result := ExitWindowsEx(RebootParam, 0);
end;
Einfach und simpel zu benutzen^^
Code:
ExitWindows(Shutdown_F);
Funktioniert bei mir in Delphi und Lazarus unter WinXP und unter Win7 tadellos
Ich hoffe ich konnte helfen

Lg
Wolf
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 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