Eintrag ins Startmenü einfügen
In folgendem Code wird die Unit JclShell verwendet, die Teil der kostenlosen JEDI Code Library ist.Zunächst wird der Record TShellLink mit Werten gefüllt. WorkingDirectory stellt das Arbeitsverzeichnis dar, unter Target wird die Anwendung/Datei angegeben, die beim Anklicken geöffnet werden soll. Das Icon lässt sich ebenfalls festlegen, wenn es von dem der verknüpften Datei abweichen soll. Dafür kennt der Record IconLocation (String) und IconIndex (Integer), die im folgenden Beispiel nicht verwendet werden.Nach dem Initialisieren des Records wird die Funktion ShellLinkCreateSystem aufgerufen. Sie erhält als erstes Argument den ShellLink-Record, als nächstes die CSIDL-ID eines Systemverzeichnisses und als letztes einen Dateinamen. Der Dateiname kann einen Pfad relativ zu dem davor angegebenen Systemverzeichnisses enthalten. Die Endung einer Verknüpfung lautet lnk. Der Dateiname entspricht dem Text, der letztendlich im Startmenü angezeigt wird.
Im Beispiel: Im gemeinsamen Startmenü (CSIDL_COMMON_STARTMENU) wird unter Programme/Zubehör ein Eintrag mit dem Titel „Delphi-Treff“ angelegt. Beim Anklicken wird die Anwendung „c:\test\test.exe“ ausgeführt.
CSIDL-Konstanten für das Startmenü:
CSIDL_COMMON_STARTMENU Das Startmenü für alle User. Typischerweise C:\Dokumente und Einstellungen\All Users\Startmenü. Gültig nur unter Windows NT-Systemen.
CSIDL_STARTMENU Das Startmenü des aktuellen Benutzers. Typischerweise C:\Dokumente und Einstellungen\Benutzername\Startmenü
uses JclShell, ShlObj; procedure TForm1.Button1Click(Sender: TObject); var ShellLink: TShellLink; begin CoInitialize(nil); with ShellLink do begin Arguments:=''; IdList:=nil; WorkingDirectory:='c:\test'; Target:='c:\test\test.exe'; Description:='Testprogramm'; end; ShellLinkCreateSystem(ShellLink, CSIDL_COMMON_STARTMENU, 'Programme\Zubehör\Delphi-Treff.lnk'); ShellLinkFree(ShellLink); end;
Die Win32-Funktion CoInitialize initialisiert die COM-Bibliothek, auf der die Shell-Funktionen aufbauen, für diesen Thread.Der abschließende Aufruf von ShellLinkFree gibt Ressourcen frei, die vom Record belegt worden sind.