Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm in Autostart setzen? (https://www.delphipraxis.net/445-programm-autostart-setzen.html)

CalganX 22. Jul 2002 17:45


Programm in Autostart setzen?
 
Hi @all!
Ich habe eine Frage: ich möchte, dass man auf Knopfdruck mein Programm (Verzeichnis: "C:\myProg\Prog.exe") in den Autostart / aus dem Autostart heraus gesetzt wird.
Wie mache ich das unter Delphi???

Chris1308

Daniel 22. Jul 2002 17:49

Ich würde das über einen Registry-Eintrag in "HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr entVersion\Run" lösen. Das wäre dann ein neuer Eintrag vom Typ 'String' mit der vollständigen Pfadangabe zu Deinem Programm. Das Bearbeiten der Registry haben wir hier kürzlich erst gehabt. :wink:

Grüße,
Daniel

Daniel B 22. Jul 2002 18:08

Erstell doch lieber eine Verknüpfung im Autostart Ordner anstatt die Reg weiter voll zu Müllen. :mrgreen:

Christian Seehase 22. Jul 2002 21:07

Moin Daniel B,

allerdings ist es erheblich einfacher den Registryeintrag zu realisieren, als einen Shortcut in Autostart zu erstellen (falls man nich eine fertige lnk Datei kopiert).

Daniel B 22. Jul 2002 21:30

Zitat:

Zitat von Christian Seehase
allerdings ist es erheblich einfacher den Registryeintrag zu realisieren, als einen Shortcut in Autostart zu erstellen

Hi Christian, :hi:

natürlich hast du da recht. Nur ich bin der Meinung, wenn man die möglichkeit hat auf die Reg zu verzichten dann sollte man das auch machen.
Bei 9x/ME wo man regelmässig 1x im Monat oder alle 2Monate formatiert und neuinstalliert, da ist es egal. Aber bei NT/2k/XP, würde ich es mir schon überlegen.
Denn da muss man Müll sehr lange mit sich rumschleppen.

RomanK 22. Jul 2002 22:19

Hier ist mal Code um eine Verknüpfung zu erstellen:
Code:
function CreateLink(lpszPathObj,lpszPathLink,
  lpszDesc: string):Boolean;
var
  psl: IShellLink;
  ppf: IPersistFile;

const
  IID_IPersistFile:
     TGUID = (D1:$0000010B;
              D2:$0000;
              D3:$0000;
              D4:($C0,$00,$00,$00,$00,$00,$00,$46));
begin
  result := False;
  if SUCCEEDED(CoCreateInstance(CLSID_ShellLink,
                                nil,
                                CLSCTX_INPROC_SERVER,
                                IID_IShellLinkA,
                                psl)) then
    begin
      psl.SetPath(PChar(lpszPathObj));
      psl.SetDescription(PChar(lpszDesc));
      if SUCCEEDED(psl.QueryInterface(IID_IPersistFile,
                   ppf)) then
        begin
          ppf.Save(StringToOLEStr(lpszPathLink),TRUE);
          Result := true;
          ppf._Release; //---> Runtime-Error wenn aktiv
        end;
    end;
  psl._Release; // ---> Runtime-Error wenn aktiv
end;
Im Usesteil hab ich
Code:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  activex, comobj, shlobj, StdCtrls;

CalganX 23. Jul 2002 09:48

[quote]// ---> Runtime-Error wenn aktiv [/qoute]
Was meinst du damit? Ich habe den Code noch nicht ausprobiert, da die File jetzt ersteinmal in der Regedit steht.

Chris1308

d3g 23. Jul 2002 12:37

Hi Chris1308,

die _Release-Kommandos würde ich einfach weglassen, da Delphi in SachenCOM die intelligenteste Entwicklungsumgebnug ist (_AddRef/_Release, IDispatch.Invoke()) und COM-Objekte, wenn deren Gültigkeitsbereich endet oder auf die gleiche Variable eine neue Referenz gelegt wird, automatisch dereferenziert werden.

MfG,
d3g

Helmi 4. Mai 2004 18:49

Re: Programm in Autostart setzen?
 
Hallo,

kann mir jemand folgenden Code erklären und vielleicht auch sagen, wie man ihn anwenden muss:

Code:
function CreateLink(lpszPathObj,lpszPathLink,
  lpszDesc: string):Boolean;
var
  psl: IShellLink;
  ppf: IPersistFile;

const
  IID_IPersistFile:
     TGUID = (D1:$0000010B;
              D2:$0000;
              D3:$0000;
              D4:($C0,$00,$00,$00,$00,$00,$00,$46));
begin
  result := False;
  if SUCCEEDED(CoCreateInstance(CLSID_ShellLink,
                                nil,
                                CLSCTX_INPROC_SERVER,
                                IID_IShellLinkA,
                                psl)) then
    begin
      psl.SetPath(PChar(lpszPathObj));
      psl.SetDescription(PChar(lpszDesc));
      if SUCCEEDED(psl.QueryInterface(IID_IPersistFile,
                   ppf)) then
        begin
          ppf.Save(StringToOLEStr(lpszPathLink),TRUE);
          Result := true;
          ppf._Release; //---> Runtime-Error wenn aktiv
        end;
    end;
  psl._Release; // ---> Runtime-Error wenn aktiv
end;
mfg
Helmi

Plat 7. Mai 2004 17:48

Re: Programm in Autostart setzen?
 
Probiers mal damit

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  reg : TRegistry;
begin
  reg := tregistry.create;
  with reg do
  begin
    RootKey := HKEY_LOCAL_MACHINE;
    OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', true);
    WriteString('deinprogname', paramstr(0));
    CloseKey;
    free;
  end;

end;


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