AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Einfacher Autostart

Ein Thema von Z32 · begonnen am 22. Mär 2007 · letzter Beitrag vom 22. Mär 2007
 
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Einfacher Autostart

  Alt 22. Mär 2007, 15:12
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:
{
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;
und der Aufruf:
Delphi-Quellcode:
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);
Gruß
Malte
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 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