Entwickler-Ecke
Windows API - Windows Shutdown
Lennske - Do 17.10.02 16:21
Titel: Windows Shutdown
Ich habe einen Button gemacht mit dem man Windows beenden kann
ich habe dazu mit diesem code hantier
Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.BitBtn1Click(Sender: TObject); begin ShellExecute(Application.Handle,'open',PChar('shutdown'),nil,PChar('c:\windows\system32\shutdown.exe'),sw_ShowNormal);
end; |
Aber man muss ja die shutdown exe zum beispiel so ausführen damit es funktioniert:
C:\Windows\System32\SHUTDOWN.exe -s -t 00 -f (Rechner wird sofort herunter gefahren, aber alle Programme werden vorher beendet) .
Ich weiß nun aber nicht wie ich diese angehängten Buchstaben in den code screiben soll damit der Compiler das richtig interpretiert .
Lennske :D
Danke, im voraus
Delete - Do 17.10.02 16:29
Such mal hier im Forum. Da solltest du einiges finden, wenn es nicht sogar schon in den FAQ steht.
Anonymous - Do 17.10.02 19:22
Was macht ihr eigentlich den ganzen Tag. Forum1 dann Forum2 dann Forum3 dann Forum4 dann Forum5 dann weiter mit Forum1? Ihr seit ja in allen Foren vertreten. Habt ihr da noch Zeit für das Liebesleben? :wink:
Delete - Fr 18.10.02 02:13
Na ja, kennst du nicht das NDW Lied "Computerliebe"? :wink:
Hm, Delphi-Praxis, Coder-Area, Auq.de, Spotlight. Reicht würde ich sagen.
Wiesenbiber - Fr 18.10.02 09:09
Wäre vielleicht auch hilfreich, wenn du mal sagen könntest welche windows version du benutzt.
Deinem Code nach müsste es Windows95/98 sein, oder?
Delete - Fr 18.10.02 09:49
Nein, die "shutdown.exe" gibt´s bei mir unter Win98 nicht. Und der Pfad "windows/system
32" legt auch die Vermutung nahe, dass es ein NT-System (NT, 2000, XP) ist.
Wenn man stattdessen den Befehl
ExitWindowsEx benutzt (dazu findet man 100% was im Forum), dann muss man sich a) keine Gedanken wg. dieser "shutdown.exe" machen, b) es funktioniert unter allen Windows-Versionen,
aber mit der Einschränkung c) dass man sich unter NT-Systemen erst die passenden Rechte holt.
Der Aufruf
Quelltext
1: 2: 3: 4: 5: 6:
| ShellExecute(Application.Handle, 'open', PChar('shutdown'), nil, PChar('c:\windows\system32\shutdown.exe'), sw_ShowNormal); |
ist ohnehin Quark, weil die Parameter nicht übereinstimmen. Wenn schon, dann wäre wohl:
Quelltext
1: 2: 3: 4: 5: 6:
| ShellExecute(self.Handle, 'open', 'c:\windows\system32\shutdown.exe', // Programm '-s -t 00 -f', // Parameter nil, // Arbeitsverzeichnis SW_SHOWNORMAL); |
(inkl. der von Lennske am Anfang erwähnten Parameter) richtig. Aber wer sagt, dass
jeder Anwender sein Windows im Ordner "c:\windows" installiert hat? Auch dafür gibt es passende Funktionen, etwa
GetSystemDirectory (dann ist man auch gleich da, wo man in dem Fall hin will). Und dann sollte man bei diesem Versuch wie obigem Code mit
fileexists prüfen, ob das Programm überhaupt existiert.
Fazit:
ExitWindowsEx ist die weitaus elegantere Variante.
Lennske - Fr 18.10.02 09:54
Ich frag dass ja nur weil ich noch ein delphi newbie bin ok mit der suchfunktion werd ich in zukunft vorher suchen und das mit den parametern war ja meine eigentliche Frage.
Danke, an allen die geantwortet haben.
Lennske :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!