![]() |
Einfacher Autostart
Hallo,
Ich weiß, dass jetzt einige aufstöhnen werden, denn das Thema Autostart wurde schon öfter hier besprochen, aber ich hab da noch eine Frage zu und in den anderen Theman war das immer so schwer beschrieben. Ich brauche einfach nur einen ganz normalen Autostart, das wenn sich der User Anmeldet mein Programm gestartet wird... Normalerweise würde ich die EXE jetzt einfach in den Autostart Ordner packen, aber wie kann ich raubekommen, wo der Autostartordner des Users ist? Wie ich die Datei dahinkopiere weiß ich. Ich habe auch schon gelesen, dass man sein Programm in der Regestry regetrieren kann, aber das würde ich nur ungern machen, außer wenn das geniale Vorteile hätte :wink: |
Re: Einfacher Autostart
In der Codelib gibts dazu nen Eintrag.
![]() |
Re: Einfacher Autostart
äm...das meinte ich mit kompliziert
Gibts den keinen einfacheren Weg ein Programm in den Autostart zu packen? |
Re: Einfacher Autostart
|
Re: Einfacher Autostart
Zitat:
Na das sieht doch wesentlich besser aus...sowas habe ich gesucht, ist zwar jetzt auch regestry, aber egal :-D |
Re: Einfacher Autostart
Moin Moin,
auch wenn es ein bisschen mehr Code ist, würde ich eine Verknüpfung im Autostart-Ordner anlegen. Ich hab mir den Code dafür gerade zusammengeklaut: zwei nette Funktionen:
Delphi-Quellcode:
und der Aufruf:
{
CSIDL_COOKIES Cookies CSIDL_DESKTOPDIRECTORY Desktop CSIDL_FAVORITES Favoriten CSIDL_HISTORY Internet-Verlauf CSIDL_INTERNET_CACHE "Temporary Internet Files" CSIDL_PERSONAL Eigene Dateien CSIDL_PROGRAMS "Programme" im Startmenü CSIDL_RECENT "Dokumente" im Startmenü CSIDL_SENDTO "Senden an" im Kontextmenü CSIDL_STARTMENU Startmenü CSIDL_STARTUP Autostart ...immer des aktuellen Benutzers. Durch Einfügen von _COMMON wirds der entsprechende Ordner aller Benutzer. Beispiel: CSIDL_COMMON_STARTUP Autostart aller Benutzer } function GetSpecialFolder(hWindow: HWND; Folder: Integer): String; var pMalloc: IMalloc; pidl: PItemIDList; Path: PChar; begin // get IMalloc interface pointer if (SHGetMalloc(pMalloc) <> S_OK) then begin MessageBox(hWindow, 'Couldn''t get pointer to IMalloc interface.', 'SHGetMalloc(pMalloc)', 16); Exit; end; // retrieve path SHGetSpecialFolderLocation(hWindow, Folder, pidl); GetMem(Path, MAX_PATH); SHGetPathFromIDList(pidl, Path); Result := Path; FreeMem(Path); // free memory allocated by SHGetSpecialFolderLocation pMalloc.Free(pidl); end; function GetAutostartFolder: String; begin Result := IncludeTrailingPathDelimiter(GetSpecialFolder(MainForm.Handle, CSIDL_COMMON_STARTUP)); end; function CreateLink(const AFilename, ALNKFilename, ADescription: String) : Boolean; var psl : IShellLink; ppf : IPersistFile; wsz : PWideChar; begin Result := False; if SUCCEEDED(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_inPROC_SERVER, IID_IShellLinkA, psl)) then begin psl.SetPath(PChar(AFilename)); psl.SetDescription(PChar(ADescription)); psl.SetWorkingDirectory(PChar(ExtractFilePath(AFilename))); if SUCCEEDED(psl.QueryInterface(IPersistFile, ppf)) then begin GetMem(wsz, MAX_PATH * 2); try MultiByteToWideChar(CP_ACP, 0, PChar(ALNKFilename), -1, wsz, MAX_PATH); ppf.Save(wsz, True); Result := True; finally FreeMem(wsz); end; end; end; end;
Delphi-Quellcode:
Gruß
if not CreateLink(ParamStr(0), GetAutostartFolder + 'Name der Verknüpfung' + '.lnk', 'Beschreibung der Verknüpfung') then
MessageDlg('Fehler beim Erzeugen der Verknüpfung!', mtError, [mbOk], 0); Malte |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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