Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programmstart bei Windowsstart festlegen (https://www.delphipraxis.net/12755-programmstart-bei-windowsstart-festlegen.html)

Mitternachtsfalke 3. Dez 2003 17:28


Programmstart bei Windowsstart festlegen
 
Hi
Ich hab ein Programm geschrieben dass bei jedem Windowsstart
automatisch starten soll. Jetzt will ich eine Checkbox machen,
wo man festlegen kann, ob dass Prog das nächste Mal startet.
Bisher habe ich folgendes:

Delphi-Quellcode:
if checkbox1.checked  then
begin
  MyReg:=TRegistry.Create;
  try
    MyReg.RootKey:=hkey_local_machine;
    MyReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',true);
    MyReg.WriteString('Wert_egal',Application.ExeName);
    MyReg.CloseKey;
  finally
    MyReg.Free;
  end; end

  else begin
  MyReg.RootKey:=hkey_local_machine;
  MyReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', false);
  if MyReg.ValueExists('Wert_egal') then
    MyReg.DeleteValue('Wert_egal');
  MyReg.CloseKey;
end; end;
...so hoffe das stimmt...

Es sollte ein Wert beim Beenden gespeichert werden, ob die Checkbox
''Checked'' oder ''nicht Checked'' ist. Er müsste dann
beim nächsten Start aulgelesen werden. ...denk ich doch

Kann mir das einer erklären, wie das zu lösen ist?

Gruß MitternachtsFalke

[edit=Admin]Delphi-Tags [ delphi]...[ /delphi] eingefügt. Künftig bitte selber dran denken. ;-) Mfg, Daniel[/edit]

himitsu 3. Dez 2003 17:49

Re: Programmstart bei Windowsstart festlegen
 
Ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif und herzlich willkommen in unserer DP-Gemeinde,

schreib das einfach in's OnDestroy-Ereignis deines Formulars.
Dieses wird bein löschen des Formulars ausgeführt, also wenn das Programm beendet wird.
Delphi-Quellcode:
Procedure TForm_.FormDestroy(Sender: TObject);
  Begin
    If CheckBox1.Checked Then Begin
      MyReg := TRegistry.Create;
      Try
        MyReg.RootKey := hkey_local_machine;
        MyReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
        MyReg.WriteString('Wert_egal', Application.ExeName);
        MyReg.CloseKey;
      Finally
        MyReg.Free;
      End;
    End Else Begin
      MyReg.RootKey := hkey_local_machine;
      Try
        MyReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
        Ff MyReg.ValueExists('Wert_egal') Then
          MyReg.DeleteValue('Wert_egal');
        MyReg.CloseKey;
      Finally
        MyReg.Free;
      End;
    End;
  End;
PS: mit den [delphi]-Tags kann man den QuellCode lesbarer machen.

http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

Mitternachtsfalke 3. Dez 2003 18:12

Re: Programmstart bei Windowsstart festlegen
 
Vielen Dank für die schnelle Antwort!
Ich werds mal testen.
Doch zu den Close-Prozduren hab ich noch ne kleine Frage...
was ist der Unterschied zwischen

onClose,
onCloseQuery und
onDestroy :gruebel:

Danke nochmal

MitternachtsFalke

Luckie 3. Dez 2003 18:19

Re: Programmstart bei Windowsstart festlegen
 
Sollte sich alles mit der Delphi-Hilfe klären lassen.

Mitternachtsfalke 3. Dez 2003 18:29

Re: Programmstart bei Windowsstart festlegen
 
Das hab ich ja schon aber ich hab ne englische version
und noch nichts richtiges gefunden (was nicht heißen soll, dass
ich kein Englisch kann), nein ich finde keinen passenden Eintrag.
Naja...dann muss ich eben schauen :cry:

Luckie 3. Dez 2003 18:39

Re: Programmstart bei Windowsstart festlegen
 
Form auswählen, im OI auf die Ereignisse gehen, in das betreffende Ereigniss rein klicken, F1 drücken. dann kommt so ein text wie dieser zum Beispiel:
Zitat:

Zitat von Delphi-Hilfe
Use OnClose to perform special processing when the form closes. The OnClose event specifies which event handler to call when a form is about to close.

Oder:
Zitat:

Zitat von Delphi-Hilfe
Use OnCloseQuery to specify the conditions under which the form can close. An OnCloseQuery event handler contains a Boolean CanClose variable that determines whether a form is allowed to close. Its default value is True.

Oder sogar:
Zitat:

Zitat von Delphi-Hilfe
Use OnDestroy to perform special processing when the form is destroyed.

Womit diese Aussage
Zitat:

Zitat von Mitternachtsfalke
und noch nichts richtiges gefunden [..], nein ich finde keinen passenden Eintrag.

Wohl wiederlegt sein dürfte. Ähnliche Ergebnisse erziehlt man, wenn man die betreffenden Stichworte im Index der Hilfe eingibt. :wink:

Mitternachtsfalke 4. Dez 2003 18:31

Re: Programmstart bei Windowsstart festlegen
 
Ok Luckie du hast gewonnen.
Ich wusste noch nicht dass man in Delphi irgendwo
draufklicken und darüber dann sofort Hilfe erhalten
kann. :oops:

'Falke

MathiasSimmack 4. Dez 2003 19:12

Re: Programmstart bei Windowsstart festlegen
 
Ich habe ein Deja vù:
Zitat:

Zitat von Mitternachtsfalke
Delphi-Quellcode:
if checkbox1.checked  then
begin
  MyReg:=TRegistry.Create;
  try
    MyReg.RootKey:=hkey_local_machine;
    MyReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',true);
    MyReg.WriteString('Wert_egal',Application.ExeName);
    MyReg.CloseKey;
  finally
    MyReg.Free;
  end; end

  else begin
  MyReg.RootKey:=hkey_local_machine;
  MyReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', false);
  if MyReg.ValueExists('Wert_egal') then
    MyReg.DeleteValue('Wert_egal');
  MyReg.CloseKey;
end; end;

So was ähnliches hatten wir vor ein paar Tagen/Wochen/Monaten schon mal.
  1. HKEY_LOCAL_MACHINE als Ziel kann ohne Admin-Rechte in die Hose gehen.
  2. Warum schreibst du den Registry-Code zweimal? Einmal öffnen, und dann abhängig von der Checkbox den Wert eintragen oder entfernen.
:)

Akut-Programming 5. Dez 2003 07:18

Re: Programmstart bei Windowsstart festlegen
 
Hatte genau dasselbe in meine Anwendung eingebaut gehabt.. schau dir das mal an, wenn du immernoch nich weiter bist. :wink:

Anwendung automatisch starten

Greetz,

MathiasSimmack 5. Dez 2003 07:49

Re: Programmstart bei Windowsstart festlegen
 
Also deine Lösung ist auch nicht gerade das Gelbe vom Ei.
Bei den Schweizern, von denen du abgeschrieben hast, sieht das ein bisschen anders (= besser) aus.

Ich würd´s sogar noch weiter ausbauen, dass man den Registryschlüssel (HKCU oder HKLM) auch wählen kann. Ich wiederhole mich gern: Admin-Rechte! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr.
Seite 1 von 2  1 2      

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