AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Problem mit Herunterfahren (schon viel probiert)
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Herunterfahren (schon viel probiert)

Ein Thema von Bahamutsfire · begonnen am 7. Mär 2007 · letzter Beitrag vom 7. Mär 2007
Antwort Antwort
Bahamutsfire

Registriert seit: 8. Feb 2007
20 Beiträge
 
#1

Problem mit Herunterfahren (schon viel probiert)

  Alt 7. Mär 2007, 00:30
Hi alle,

ich habe versucht einen countdowner zur programmieren, funktioniert soweiter nur bei 0 sollte er herunterfahren.

Tut er nicht weder mit
ExitWindowsEx(EWX_SHUTDOWN, 0); noch shellexecute.
Benutze Delphi 6 Pro, bin Admin und habe sonst nix was dagegen sprechen würde.
Das einziege was passiert er springt in die If-Abfrage aber scheints nicht ernst oder nicht war zunehmen. Habe auch probiert ob er nicht rein geht- Fehlanzeige. Hoffe ich könnt mir helfen. Schonmal danke im Vorraus
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Problem mit Herunterfahren (schon viel probiert)

  Alt 7. Mär 2007, 00:38
Hi,

kennst du diesen Link schon?

Abmelden / Reboot / Shutdown unter Win 95/98/ME/NT
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Problem mit Herunterfahren (schon viel probiert)

  Alt 7. Mär 2007, 01:27
Dui musst erst das Privileg zum Runterfahren des Rechners aktivieren. Das sollte aber in jedem Code, der demonstriert, wie man einen NT ff. Rechner runterfährt, gezeigt werden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Bahamutsfire

Registriert seit: 8. Feb 2007
20 Beiträge
 
#4

Re: Problem mit Herunterfahren (schon viel probiert)

  Alt 7. Mär 2007, 09:40
Den Link kenne ich... nur hat es mir nie viel gesagt wie das mit den Privilegien funktioniert(bin leider erst 1. Jahr in Delphi). Kann mir dann einer sagen wie und wo ich diese positionier kann/soll?
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Problem mit Herunterfahren (schon viel probiert)

  Alt 7. Mär 2007, 09:45
Das steht doch direkt unter dem Beitrag von Daniel.

Entweder der Funktion den passenden Flag als Parameter mitgeben, oder in der Deklaration den Parameter entfernen und manuell in Zeile 25 einfügen, wenn die Funktion wie bei dir immer das Gleiche machen soll.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#6

Re: Problem mit Herunterfahren (schon viel probiert)

  Alt 7. Mär 2007, 09:56
Ich mache das so:

Delphi-Quellcode:
type
  TExit=(Reboot,Shutdown,Logoff,Hibernate,Standby);

procedure ExitWin(Exit:TExit;Force:boolean);
  //Urheber: [url]www.delphipraxis.net[/url] (Daniel B. & NikoMitDaMacht)
var Flags:integer;
begin
  GetShutdownPrivileges;
  if Exit=Shutdown then
    ExitWindowsEx(EWX_ShutDown,0);

  if Exit=Hibernate then
    SetSystemPowerState(false,Force);

  if Exit=Standby then
    SetSystemPowerState(true,Force);

  if Exit=Logoff then
  begin
    Flags:=EWX_LOGoff;
    if Force then
      flags:=flags+EWX_FORCE;
    ExitWindowsEx(flags,0);
  end;

  if Exit=Reboot then
  begin
    flags:=EWX_REBOOT;
    if Force then
      flags:=flags+EWX_FORCE;
    ExitWindowsEx(flags,0);
  end;
end;
Delphi-Quellcode:
procedure GetShutdownPrivileges;
var vi : TOSVersionInfo;
    hToken : THandle;
    tp : TTokenPrivileges;
    h : DWord;
begin
  vi.dwOSVersionInfoSize:=SizeOf(vi);
  GetVersionEx(vi);
  if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then
  begin
    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;
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ExitWin(Shutdown,true);
end;
Lucky hatte zwar schonmal was dagegen, weil ich eine exception oder so weggelassen habe, aber bei mir funktioniert das wunderbar (Win XP)

greetings ...
Achim
  Mit Zitat antworten Zitat
Bahamutsfire

Registriert seit: 8. Feb 2007
20 Beiträge
 
#7

Re: Problem mit Herunterfahren (schon viel probiert)

  Alt 7. Mär 2007, 09:59
Danke an alle werde das mal ausprobieren.

Edit: Hey klappt 1 a (hoffe mein Lehrer kann mir das in der nächsten Stunden bis ins kleinste Detail erklären) nochmal dank danke.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Problem mit Herunterfahren (schon viel probiert)

  Alt 7. Mär 2007, 10:54
Dein Lehrer sollte dir eigentlich die Grundlagen der Sprache vermitteln und nicht die Funktionsweise von einem speziellen Betriebssystem und seinen APIs.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#9

Re: Problem mit Herunterfahren (schon viel probiert)

  Alt 7. Mär 2007, 20:01
Wen interessiert, wie das funktioniert? Coyp&Paste ist das A und O hier, finde ich Wenn man eine Prozedur, Funktion oder gewisse Klassenaufrufe oft braucht, dann lernt man das eigentlich gleich mit, was das bedeutet. Allerdings wäre ich gespannt, ob dein Lehrer weiß, was das alles bedeutet in GetShutdownPrivileges() *ggg*
Achim
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:31 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