Entwickler-Ecke

Windows API - Herunterfahren


ddcool - Sa 14.06.03 11:08
Titel: Herunterfahren
Hi, mit welchem Befehl, kann ich Windows komplett Herunterfahren und den PC aussschalten lassen oder Neu Starten lassen.

Will nämliich einen Server Herunterfahren, über Remotedesktopverbindung und dazu will ich mir ein Proggy schreiben!!!


THX schon mal im vorraus.


Moderiert von user profile icontommie-lie: Topic verschoben


BungeeBug - Sa 14.06.03 11:33

Hi,
darf ichs ihm sagen??


MfG BungeeBug

P.S.: Ich kann dir schon mal verraten das die rundll32.dll dein Freund wird :)


Pascal - Sa 14.06.03 11:35

klar darfst du's sagen ansonsten
http://www.picsoft.de/delphi/faq12.htm
steht es da irgendwo drin


BungeeBug - Sa 14.06.03 11:37

nagut ...

Einmal bitte mit ShellExecute "rundll32.dll User,ExitWindows" aufrufen :)

da is dann aber nix mehr zumachen das führt unweigerlich und ohne Sicherheitsabfrage zum ShutDown.

MfG BungeeBug


Pascal - Sa 14.06.03 11:39

ExitWindowsEx(EWX_LOGOFF,0); (* Neuanmeldung *)
ExitWindowsEx(EWX_REBOOT,0); (* Windows neu starten *)
ExitWindowsEx(EWX_SHUTDOWN,0); (* Windows herunterfahren *)

so gehts auch


ddcool - Sa 14.06.03 11:41
Titel: Unter XP
Geht das auch alles unter WinXP?????


Pascal - Sa 14.06.03 11:43

Wenn ud winxp hast dann probiers halt aus ansonsten wüsste ich nicht warum es nicht gehen sollte.


ddcool - Sa 14.06.03 11:46
Titel:
Wenn ich es mit ExitWindows mache, loggt er sich nur aus, wenn ich es mit ExitWindowsEx mache passiert nichts.

Sag mal den genauen Befehl für die rundll32.dll


Delete - Sa 14.06.03 12:04

Mir stehen die Haare zu Berge, wenn ich das lese.

Hier steht übrigens die richtige Lösung in den FAQs:

Windows runterfahren [http://www.delphi-forum.de/viewtopic.php?t=8272]
(Ich habe mir mal erlaubt den Link zu posten, da ja einige nicht in der Lage zu sein scheinen in den FAQs zu erst zu kucken, geschweigen denn die Suche zu bemühen.)


ddcool - Sa 14.06.03 12:07
Titel: Ich fang gleich an zu heul
Des geht auch net und in meiner Delphi version (Delphi 7 Enterprise) geht der Befehl ShellExecute und Execute net!!! *heul*


ddcool - Sa 14.06.03 12:10
Titel: Komponente
Was für ne Komponente muss ich einfügen um ShellExecute benutzen zu können???


Delete - Sa 14.06.03 12:20

Du hast nicht auf den Link geklickt?

Du hast wieder nicht die Suche bemüht. Dies mal wäre Shellexecute das Stichwort gewesen.


ddcool - Sa 14.06.03 12:35
Titel: f***
Ey BungeeBug, das mit der rundll32.dll geht net, sag mal den 100% befehl!!!!


ddcool - Sa 14.06.03 12:39
Titel: Achja
Wie kann ich die Ereignisse OnMouseOver und OnMouseOut aktivieren???


Delete - Sa 14.06.03 12:40
Titel: Re: f***
ddcool hat folgendes geschrieben:
Ey BungeeBug, das mit der rundll32.dll geht net, sag mal den 100% befehl!!!!

Ey ddcool, ich gebe auf. Und was ist das für ein komischer Titel bei deiner Antwort?


ddcool - Sa 14.06.03 12:43
Titel: SRY
Ja ich habe mir jetzt sämtliche FAQ's durchgelesen, aber alles was die da machen, funzt net.

SRY wegen dem titel.


mars - Sa 14.06.03 12:46

Dann poste mal was du bisher hast und was denn passiert, wenn du es ausführst.


ddcool - Sa 14.06.03 12:50
Titel: Hier
Einmal:

ShellExecute (0, nil,'rundll32.dll User,ExitWindows',nil,nil,SW_NORMAL);




oder:


(EWX_SHUTDOWN and EWX_POWEROFF, $FFFFFFFF);




beim ersten passiert nichts bein zweiten loggt er sich nur aus und wenn ich bein zweiten anstatt "and" ein "or" einsetzt passiert da auch nichts.


Bela Urlaub - Sa 14.06.03 12:51
Titel: Re: Komponente
ddcool hat folgendes geschrieben:
Was für ne Komponente muss ich einfügen um ShellExecute benutzen zu können???


ShellAPI oda?


Delete - Sa 14.06.03 12:54
Titel: Re: Hier
ddcool hat folgendes geschrieben:

beim ersten passiert nichts bein zweiten loggt er sich nur aus und wenn ich bein zweiten anstatt "and" ein "or" einsetzt passiert da auch nichts.

Hast du dir auch durchgelesen, was in den FAQ zu XP bzw. NT-basierenden Systemen (Windows 2000) steht? Sieht nicht so aus. :roll:


ddcool - Sa 14.06.03 12:55
Titel: Doch
Doch ich habe mir das durchgelesen aber bei XP steht, das die letzt zahl im befehl ExitWindowsEx wichtig ist, aber net was man da den angeben muss!!!


Delete - Sa 14.06.03 13:24

Hast du auch weiter gelesen? dass man sich unter XP usw. die nötigen rechte holen muß? :roll:[/quote]


Popov - Sa 14.06.03 16:34

Nur so nebenbei, um ShellExecute zu nutzen muß man


Delphi-Quelltext
1:
2:
uses
  ..., ShellApi;


einbinden.

ShellExecute ist eine Windows API Funktion.

Ansonsten wurde ich die Finger von dem Programm lassen. Wenn man noch Probleme mit solchen API Funktionen hat, dann sollte man nicht versuchen gleich Windows runterzufahren. Man könnte sich sonst in die Finger schneiden.

Die Kombination von Delphi 7 Enterprise, Windows runterfahren und die Unkenntnis wie ShellExecute funktioniert und was ShellApi ist, sagt mir, daß einer versucht hier Schabernack zu treiben, bzw. ein böses Programm zu schreiben.


Delete - Sa 14.06.03 19:22

Über die Motive spekuliere ich nicht, Popov. :) Aber ich glaube, für Anfänger reicht auch eine Personal-Edition aus. Aber na ja, es muss halt das Flaggschiff sein ... auch wenn´s etwas teurer ist ... Ich vermute manchmal, dass die Leute denken, mit ENTERPRISE schreiben sich die Programme von allein bzw. bügeln die Unkenntnis der Vor-dem-Rechner-Sitzenden automatisch mit den richtigen Befehlen aus. :twisted:

So, aber genug gelästert.


Unzi - So 15.06.03 12:33

Mensch Leute, ihr kriegt einen Link, in dem das ganze Programm fix und fertig steht und man sich die Sache nur rüberkopieren muss damit's funktioniert, und ihr diskutiert hier noch ewig. Hier nochmal der Link von Luckie:
Windows runterfahren [http://www.delphi-forum.de/viewtopic.php?t=8272]
Den wertet man folgendermaßen aus:
1. Man klickt ihn an.
2. Man kopiert sich das ganze Prozedere und fügt es in sein Programm mit evtl. Anpassungen ein (was ja nicht so schwer sein dürfte)
3. Man ruft die Prozedur folgendermaßen auf:

<prozedur-name>(EWX_REBOOT);
oder
<prozedur-name>(EWX_SHUTDOWN or EWX_POWEROFF);
oder
<prozedur-name>(EWX_SHUTDOWN);
oder
<prozedur-name>(EWX_LOGOFF);

Unzi