![]() |
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 |
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 |
Erstell doch lieber eine Verknüpfung im Autostart Ordner anstatt die Reg weiter voll zu Müllen. :mrgreen:
|
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). |
Zitat:
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. |
Hier ist mal Code um eine Verknüpfung zu erstellen:
Code:
Im Usesteil hab ich
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;
Code:
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, activex, comobj, shlobj, StdCtrls; |
[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 |
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 |
Re: Programm in Autostart setzen?
Hallo,
kann mir jemand folgenden Code erklären und vielleicht auch sagen, wie man ihn anwenden muss:
Code:
mfg
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; Helmi |
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 19:53 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