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
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

AW: Shutdown Befehl auf Windows 7

  Alt 6. Jul 2011, 21:55
Ich sehe gerade, man muss noch nicht mal runterscrollen und Das Thema besteht nur aus zwei Beiträgen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

AW: Shutdown Befehl auf Windows 7

  Alt 7. Jul 2011, 09:25
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ExitWindowsEx(EWX_SHUTDOWN, 0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ExitWindowsEx(EWX_REBOOT, 0);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  ExitWindowsEx(EWX_LOGOFF, 0);
end;

end.
Wie du vielleicht in nahezu allen Threads zu ExitWindowsEx gesehn haben könntest, hat ExitWindowsEx einen Rückgabewert, welchen man auswerten sollte und wie im MSDN (das ist das, wo die Beschreibung zu solchen Windowsbefehlen drinsteht) geschrieben steht, bekommt man über GetLastError im Fehlerfall auch noch einen genaueren Grund, warum es nicht ging.

MSDN-Library durchsuchenExitWindowsEx
MSDN-Library durchsuchenGetLastError
Delphi-Referenz durchsuchenSysErrorMessage
Delphi-Referenz durchsuchenShowMessage
oder statt SysErrorMessage und ShowMessage gleich ein Delphi-Referenz durchsuchenRaiseLastOSError

Und schon hättest du gleich gewust, warum bei dir der Befehl nicht geht.

PS: Man muß sich nicht nur die nötigen Privilegien freischalten ... diese Privilegien dürfen auch nicht vom Administrator deaktiviert wurden sein, sonnst kann man sie ja garnicht aktivieren.
$2B or not $2B

Geändert von himitsu ( 7. Jul 2011 um 09:28 Uhr)
  Mit Zitat antworten Zitat
XBladerX

Registriert seit: 24. Jun 2011
5 Beiträge
 
Delphi 7 Personal
 
#13

AW: Shutdown Befehl auf Windows 7

  Alt 10. Jul 2011, 00:01
Das programm funktioniert immer noch nicht ..
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

AW: Shutdown Befehl auf Windows 7

  Alt 10. Jul 2011, 00:25
OK.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#15

AW: Shutdown Befehl auf Windows 7

  Alt 10. Jul 2011, 00:44
Zitat:
Das programm funktioniert immer noch nicht ..
Die DP mit Twitter verwechselt?
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#16

AW: Shutdown Befehl auf Windows 7

  Alt 10. Jul 2011, 09:29
Hi,
hier ist die Lösung funktioniert einwandfrei:
In Nameadress muss die IP des runterzufahrenden Rechners stehen.
In deinem Fall deine eigene.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var a:string;
begin
  a:='cmd /C shutdown /t 1 /s /f /m \\'+Nameaddress;
  ShellExecute(handle, nil, PChar('cmd.exe'), PChar(a), nil, SW_SHOWNOACTIVATE);
end;
Wenn du shellexecute nicht verstehst googln.
Verlass dich drauf man kann sowas brauchen. Ich kontrolliere damit 12 Server. (Notshutdown Reboot usw)
Was ist denn dann schlecht dabei wenn mein eigener Rechner ebenfalls runtergefahren werden kann.
Grüsse
Rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.

Geändert von R2009 (10. Jul 2011 um 09:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#17

AW: Shutdown Befehl auf Windows 7

  Alt 10. Jul 2011, 09:58
Funktioniert das auch noch, wenn Du keine Admin-Rechte hast?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
doctor-x

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

AW: Shutdown Befehl auf Windows 7

  Alt 10. Jul 2011, 16: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
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

AW: Shutdown Befehl auf Windows 7

  Alt 10. Jul 2011, 16:56
Ähnlichen Code haben wir, glaube ich schon fünf mal verlinkt.

Aber wie wäre es bei dir mal mit einer Fehlerbehandlung?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 12:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz