Entwickler-Ecke

Windows API - Herunterfahren des PC's! Einfach gemacht?


Sn00py - Di 17.09.02 17:52
Titel: Herunterfahren des PC's! Einfach gemacht?
Hallo leutz!

Ich habe seit kurzen angefangen mit Delphi herumzuwurschteln und es würde mich wirklich mal interresieren wie ich Delphi den PC herunterfahren lasse wenn ich es will! Z.B nach einer bestimmten zeit!
Ich denke das das nicht so schwer ist würde mich aber frewuen wenn mir we helfen könnte!

Danke allen dir mir antworten!
euer Sn00py


LCS - Di 17.09.02 18:36

Guckst du hier [http://www.swissdelphicenter.ch/de/showcode.php?id=168]

Gruss Lothar


Delete - Di 17.09.02 18:37

Was für ein Betriebssystem?

Und such mal hier im Forum nach ExitWindiwsEx. Oder kuck im EDH auf http://www.delphi-treff.de .


Delete - Di 17.09.02 20:26

Ist beim Tipp im SwissDelphiCenter alles berücksichtigt, Luckie. - Aber ich weiß, dass Pit hier bei AUQ.de wohl die für den neuen EDH geplante Version gepostet hat.


Tino - Di 17.09.02 20:28

Brauchbare Antworten findest Du auch hier bei AUQ.de:
...Windows neustarten/beenden? [http://www.auq.de/viewtopic.php?t=111&highlight=exitwindowsex]
WinXP herunterfahren [http://www.auq.de/viewtopic.php?t=178&highlight=exitwindowsex]
Rechner neu starten, abmelden, herunter fahren [http://www.auq.de/viewtopic.php?t=1244&highlight=exitwindowsex]

Gruß


Delete - Di 17.09.02 20:35

Tino hat folgendes geschrieben:
Brauchbare Antworten findest Du auch hier bei AUQ.de:

Erschreckend ist eher, dass es doch mehr als eine ist. :wink:

Zitat:
...Windows neustarten/beenden? [http://www.auq.de/viewtopic.php?t=111&highlight=exitwindowsex]

Die würde ich aus den FAQs rausnehmen, Tino. toms hat in seiner Antwort ja auch gesagt, wieso.

Zitat:
WinXP herunterfahren [http://www.auq.de/viewtopic.php?t=178&highlight=exitwindowsex]

Na ja, das typische Beispiel halt - auch von toms erklärt.

Zitat:
Rechner neu starten, abmelden, herunter fahren [http://www.auq.de/viewtopic.php?t=1244&highlight=exitwindowsex]

Tja, und die enthält eigentlich keinen verwertbaren Code und könnte inzwischen -mit Blick auf die FAQs- wohl auch entfernt werden.
So, und ich meinte dir hier: Win Xp mit Delphi herunterfahren? [http://www.auq.de/viewtopic.php?t=710&highlight=exitwindowsex]

Macht also min. 4 Antworten. :)


Delete - Di 17.09.02 21:08

Copyright liegt bei Dephi-Treff. :shock:

Muß ich die jedes mal Fragen, wenn ich den Code in meinem Programm verwende?
Das kann doch nicht sein für so ein Pipifax.

Der Code ist weder einzigartig noch besonders originell, noch beinhaltet er schützenswerte Routinen. Es ist einfach die Lösung um die Rechte zum Runterfahren zubekommen. Das wird nicht anders gehen.

@Mathias: Kuck mal auf die Uhrzeit von meinem ersten Posting und dem von meinem Nachposter. :wink:


Sn00py - Di 17.09.02 22:29

Thx an alle!

Das war mein erster beitrag und ich war überrascht das ich soviel antworten in so einer zeit bekomme! :D (war auf den Geburtstag meines Bruders)
Ausprobieren konnte ich es zwar noch nicht aber das kommt morgen!
Also macht alle eiter so!

euer Sn00py!


Delete - Mi 18.09.02 07:46

Luckie hat folgendes geschrieben:
Copyright liegt bei Dephi-Treff. :shock:

Muß ich die jedes mal Fragen, wenn ich den Code in meinem Programm verwende?

Nein, ich glaube, es läuft eher darauf hinaus, dass der EDH nun mal sein Copyright hat. Das bestreitet oder missachtet auch niemand, denke ich. Und der verwendete Code ist dann wohl Teil des neuen EDH. Insofern finde ich den Copyright-Hinweis schon ganz sinnvoll.

Aber recht hast du trotzdem:
Zitat:
Das kann doch nicht sein für so ein Pipifax.

Wenn jeder sein Copyright vor irgendwelche Systemroutinen setzt, dann dürfte man a) gar nichts mehr verwenden, und b) würde Microsoft da sicher nicht tatenlos zusehen, denn im Endeffekt haben die das eigentliche Copyright auf ihre Systemroutinen. :)

Zitat:
Der Code ist weder einzigartig noch besonders originell, noch beinhaltet er schützenswerte Routinen. Es ist einfach die Lösung um die Rechte zum Runterfahren zubekommen. Das wird nicht anders gehen.

Das ist richtig, aber er ist kürzer und dennoch effizienter als der, den ich bisher genutzt habe. :oops: Deswegen steckt er jetzt ja auch in meinem Speedy drin. :wink:

Zitat:
Kuck mal auf die Uhrzeit von meinem ersten Posting und dem von meinem Nachposter.

Beiträge lesen und auf die Uhrzeit achten? Das sind ja gleich zwei Wünsche auf einmal ... :wink: Nee, schon klar, Luckie - jetzt, wo du es sagst, geht auch mir ein :idea: auf.


Sn00py - Mi 18.09.02 23:07

So!
Ich kam dazu es auszuprobieren aber Delphi hatt höchstens alle Programme (bis auf 2) geschlossen!
Es kam aber auch vor das eine Fehlermeldung kam!
Zitat:
Was für ein Betriebssystem?

ich habe Windows 98!

Also bitte helft mir!!!! :shock:

euer Sn00py


Delete - Mi 18.09.02 23:14

http://www.auq.de/viewtopic.php?p=10594#10594


Delete - Do 19.09.02 08:59

Luckie hat folgendes geschrieben:
Eine Url, die ich mir spare

Gut, dass keine Skripte ausgeführt werden können. Das wäre sonst ´ne Endlosschleife geworden. :wink:

Sn00py hat folgendes geschrieben:
Ich kam dazu es auszuprobieren aber Delphi hatt höchstens alle Programme (bis auf 2) geschlossen!

Reden wir eigentlich noch vom selben Problem? :?

Zitat:
Es kam aber auch vor das eine Fehlermeldung kam!

Es wäre ungemein hilfreich, wenn du diese Fehlermeldung auch zitieren könntest.

Zitat:
ich habe Windows 98!

Ist eigentlich unwichtig, da die meisten Postings in den o.g. Links das Problem der Betriebssysteme bereits lösen. Will sagen: Rechtefrage unter NT usw.

Außerdem zum Nachdenken:
Dass du Windows 98 benutzt, heißt ja nicht, dass das jeder macht, dem du dein Programm gibst. Oder?

Zitat:
Also bitte helft mir!!!!

Tja, bloß wie? Bei den mangelnden Informationen.


Delete - Do 19.09.02 09:05

@Mathias: Ist doch war. Auf dieser Seite und auf den gelinkten Seiten steht alles! Wie soll man ihm da noch helfen, wenn er ...

Ich sage lieber nichts mehr, sonst paßiert noch was. :roll:


Sn00py - Do 19.09.02 15:40

Zitat:
Reden wir eigentlich noch vom selben Problem?


JA! Ich hatte den code ausprobiert der hier verlinkt war und Anstatt den PC herunterzufahren hatt das Programm nur n Paar ander Programme beendet!


Zitat:
Es wäre ungemein hilfreich, wenn du diese Fehlermeldung auch zitieren könntest.

wörtlich steht da:

Access violation at address 40025155 in module 'RTL60.BPL'. Read of Address FFFFFFF.

ok wenn du noch mehr infos brauchst sag bescheid :!:

euer Sn00py


Sn00py - Do 19.09.02 15:52

:oops: :oops: :oops: SOORRY LEUTZ!!!!!!!!!!!!!!! :oops: :oops: :oops:

Ich habe das programm bis jetzt immer nur in Debug modus laufen lassen habs aber eben noch anders versucht und es funktioniert!!!!!
:idea: Also ein schönen dank ann euch allen!

euer Sn00py


Delete - Do 19.09.02 15:55

Dieser Code funktioniert bei mir problemlos:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
function ExitWin(flag:word): Boolean;
var vi      : TOSVersionInfo;
    hToken  : THandle;
    tp      : TTokenPrivileges;
    h       : DWord;

begin
  //result := false;
  vi.dwOSVersionInfoSize:=SizeOf(vi);
  GetVersionEx(vi);
  if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then // Windows NT
  begin
    // Achtung bei Delphi 2 muß @hToken stehen ... !!!! ?????
    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);
    result := ExitWindowsEx(flag,0);
  end
  else // Windows 95
  begin
    Result := ExitWindowsEx(flag,0);
  end;
end;