![]() |
Hilfe bei Autostart und .Bat Datei
Hallo
Ich bin grad dabei mein erstes Programm zu schreiben, darum bitte keine "Fremdwörter" :) Also, mein Programm soll sich automatisch in die Registry als Autostart eintragen. Aus einem anderen Thread hier im Forum hab ich diesen Sourcecode für die Registry Eintragung einfach genommen. Desweitere soll mein Programm nach 60 Minunten den PC automatisch herunterfahren (Gelöst per .BAT datei mit "Shutdown -s") und schließlich soll mein Programm sich auch noch von selbst beenden. Hier ist erstmal der Source Code meines Programms:
Delphi-Quellcode:
Nun gibt es folgende Probleme:
unit MeinProgrammU;
interface uses Windows, Messages, Registry, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; Label1: TLabel; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); var Reg: TRegistry; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True); Reg.WriteString('EigenesProgramm', ParamStr(0)); Reg.CloseKey; finally Reg.Free; Sleep (3600000); WinExec('Shutdown.bat', SW_SHOWNORMAL); close; end; end; end. 1. Das Programm beendent sich nicht. 2. Nach dem Neustart funktioniert meiner ansicht nach alles nur der PC wird nicht herunter gefahren. Bitte beachten (und genau das finde ich das komische), dass bei ersten mal öffnen, das Programm seine Funktionen alles ausführt, nur beim nächsten mal, wo es über den Autostart gestartet wird funktioniert das herunterfahren nicht mehr =( Hoffe ihr könnt mir helfen. Vielen Dank |
Re: Hilfe bei Autostart und .Bat Datei
hallo und willkommen in der dp ;-) :dp: :dp:
dein problem ist deine sleep funktion, mit der sagst du ihm quasi, das er in dem quellcode erst na einer stunde weiter machen soll, deswegen beendet er das programm auch nicht, weil er quasi ne pause macht!!! auch dein 2 problem sollte daran ligen.. edit: ach ja, mit dem runterfahren nach dem neustarten hat er wahrscheinlich probleme, weil er die "*.bat" datei nicht findet, denn bei dem neustart hat er einen anderen augenblicklichen pfad drinne, als wenn du dein programm direkt startest! abhilfe schafft dabei, eine pfadangabe mit dem winexec parameter zu übergeben.. und noch als anmerkung, die funktion winexec ist veraltet und nur noch für kompatiblität abwärtshalber vorhanden.. z.b. createprocess!! |
Re: Hilfe bei Autostart und .Bat Datei
Hi CreekMary,
zuallererst Wilkommen in der DP! Dann hab ich noch 5 Fragen: 1.) Hast du es schon mal mit kürzeen Zeiten für einen Testlauf versucht? 2.) Warum benutzt du eine BatDatei, wenn es auch in der EXE miteinkompiliert werden kann ( ![]() 3.) Arbeitet die Anwendung richtig?? 4.) Im Regestry-Zweig HKCU werden die Programme erst nach der Anmeldung ausgeführt. Wie sieht es da aus? 5.) Warum bei jedem Programmstart den Regestry-Key überschreiben, wenn er doch schon da ist? rollstuhlfahrer EDIT: über den Win-Befehl shutdown kann man mit Hilfe des -t eine bestimme Zeit festlegen, bis die Aktion ausgeführt wird. |
Re: Hilfe bei Autostart und .Bat Datei
Zitat:
Zitat:
Danke jetzt schon einmal |
Re: Hilfe bei Autostart und .Bat Datei
schau dir noch mal den edit in meinem 1 post an^^
und für shellexecute findest du hier was: ![]() |
Re: Hilfe bei Autostart und .Bat Datei
Anstatt die BAT-Datei zu starten, solltest du lieber
Delphi-Quellcode:
nehmen.
ExitWindowsEx(EWX_SHUTDOWN, 0);
|
Re: Hilfe bei Autostart und .Bat Datei
also das hier:
Zitat:
und wegen dem hier: Zitat:
|
Re: Hilfe bei Autostart und .Bat Datei
na gebe einfach eine pfad an, (ich weiß ja nicht wo deine datei sich befindet) zb so:
Delphi-Quellcode:
ich denke mal dann sollte er das mit dem runterfahren machen..
WinExec('C:\Shutdown.bat', SW_SHOWNORMAL);
|
Re: Hilfe bei Autostart und .Bat Datei
nochmal zu ShellExecute:
Bei MSDN staht folgendes Beispiel:
Code:
Setze einfach für file den kompletten absoluten Dateinamen ein. bei params kannst du NULL eintragen und bei verz evt. auch.
ShellExecute(handle, 'open', file, params, verz, SW_SHOWNORMAL);
hieße:
Code:
Ob das mit NULL so einfach geht bin ich mir nicht sicher (MSDN bezieht sich sehr auf C-Compiler) ansonsten einfach ein LeerString
ShellExecute(handle, 'open', 'C:\Verzeichnis1\Verzeichnis2\Datei.bat', NULL, NULL, SW_SHOWNORMAL);
rollstuhlfahrer PS: shutdown sieht so aus
Code:
ShellExecute(handle, 'open', 'shutdown', '-r -f -t 3600', NULL, SW_SHOWNORMAL); reboot in 3600 sek
|
Re: Hilfe bei Autostart und .Bat Datei
Zitat:
Inkompatible Typen: 'Variant' und 'PChar' :gruebel: :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz