Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Windows 8.1 64 Bit herunterfahren. (https://www.delphipraxis.net/183979-windows-8-1-64-bit-herunterfahren.html)

Walter Landwehr 17. Feb 2015 15:20

Windows 8.1 64 Bit herunterfahren.
 
Hallo,

Ich versuche Windows 7 / 8 automatisch herunterzufahren.

Gebe ich unter Ausführen folgenden Befehl ein:

C:\Windows\SysWOW64\schtasks /create /TN Herunterfahren /SC ONCE /ST 15:30 /TR "shutdown.exe /s /f /t 0"

so fährt der Rechner ordnungsgemäß um 15:30 Uhr runter.

nun das ganze in Delphi:
Delphi-Quellcode:
Ausschalten := 'C:\Windows\SysWOW64\schtasks /create /TN Herunterfahren /SC ONCE /ST ' +
  TimeToStr(edtZeit.Time) + ' /TR "shutdown.exe /s /f /t 0"';
ShellExecute(self.Handle,'open',Pchar(Ausschalten),'','',SW_Normal);
Hier funktioniert es nicht. Was mache ich falsch? :(

Kann mir jemand einen Tipp geben.

Vielen Dank im voraus.

baumina 17. Feb 2015 15:29

AW: Windows 8.1 64 Bit herunterfahren.
 
Das 'open' irritiert mich etwas.

EWeiss 17. Feb 2015 15:34

AW: Windows 8.1 64 Bit herunterfahren.
 
sollte das nicht mit ShellExecute übergeben werden?

Zitat:

'shutdown.exe'
gruss

Dalai 17. Feb 2015 15:36

AW: Windows 8.1 64 Bit herunterfahren.
 
Hast du mal geprüft, ob der Task eingetragen wird?

EDIT: Der Fehler liegt darin, der Funktion ShellExecute den ganzen Befehl zu übergeben, während sie eigentlich erwartet, lpFile und lpParameters getrennt voneinander zu bekommen.

MfG Dalai

hathor 17. Feb 2015 16:39

AW: Windows 8.1 64 Bit herunterfahren.
 
@TE

Eine Pfad-Angabe braucht man in diesem Fall nicht: WINDOWS weiss, wo es die beiden Programme findet.

Wenn Du den /t-Parameter nicht nutzt, kannst Du ihn auch weglassen.
Bei neuen WINDOWS-Versionen kann man Sekunden eingeben, die bis 10 Jahre entsprechen - früher max. 600 Sek.
Ich habe /t 30 gesetzt, um evtl. noch abbrechen zu können...

Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
var strParams : String;
begin
strParams:= '/create /TN Herunterfahren /SC ONCE /ST 17:30:00 /TR "shutdown.exe /s /f /t 30"';
ShellExecute(Application.Handle,NIL,'schtasks', PWChar(strParams),NIL, SW_SHOW);
end;

Walter Landwehr 17. Feb 2015 17:50

AW: Windows 8.1 64 Bit herunterfahren.
 
Danke hathor,

so funktioniert es. :hi:

hathor 17. Feb 2015 18:16

AW: Windows 8.1 64 Bit herunterfahren.
 
Änderungen, wenn man flexibel sein will:

- Zeitangabe im Edit-Feld
- Hibernation statt Shutdown

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var strParams : String;
begin
Edit1.Text:= '19:10:00';
strParams:= '/create /TN Schlaf2 /SC ONCE /ST '+ Edit1.text +' /TR "shutdown.exe /h"';
ShellExecute(Application.Handle,NIL,'schtasks', PWChar(strParams),NIL, SW_SHOW);
end;
Im Console-Fenster (cmd.exe) kann man mit
schtasks /Query
überprüfen, was alles geplant ist.

stahli 2. Mai 2018 10:14

AW: Windows 8.1 64 Bit herunterfahren.
 
Ich habe hier im Dienst auf die Schnelle keine funktionierende Lösung für eine D7-Anwendung unter Win10 64bit gefunden und einfach eine batch-Datei genutzt.

Code:
MyProg.exe
shutdown -s
Dann muss sich mein Programm nur beenden und der Rechner fährt anschließend runter. Hat wunderbar funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:55 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