size : 1409 uploaded_on : Wed Oct 7 00:00:00 1998 modified_on : Wed Dec 8 14:03:13 1999 title : Desktop link org_filename : DesktopLink.txt author : Mario Mueller authoremail : mario.mueller@online.de description : How to create a link on the desktop keywords : tested : not tested yet submitted_by : The CKB Crew submitted_by_email : ckb@netalive.org uploaded_by : nobody modified_by : nobody owner : nobody lang : plain file-type : text/plain category : delphi-system32bit __END_OF_HEADER__ > How can I create a link on the desktop to my program (application.exename)? uses ShlObj, ActiveX, ComObj; procedure TForm1.Button1Click(Sender: TObject); var aObject : IUnknown; aSLink : IShellLink; aPFile : IPersistFile; sDirectory : string; wsFileName : WideString; szWinDir : array[0..29] of char; begin FillChar(szWinDir, SizeOf(szWinDir), #0); GetWindowsDirectory(szWinDir, SizeOf(szWinDir)); aObject := CreateComObject(CLSID_ShellLink); aSLInk := aObject as IShellLink; aPFile := aObject as IPersistFile; with aSLink do begin SetPath(PChar(editProgramm.Text)); SetArguments(PCHar(editParameter.Text)); SetWorkingDirectory(szWinDir); end; sDirectory := GetShellFolderPath(CSIDL_DESKTOPDIRECTORY); //sDirectory := GetShellFolderPath(CSIDL_STARTMENU); Assert(sDirectory[Length(sDirectory)] <> '\', 'Backslash!'); wsFileName := sDirectory + '\' + editLink.Text; aPFile.Save(PWChar(wsFileName), false); end; function TForm1.GetShellFolderPath(const aFolder : integer) : string; var pIIL : PItemIDList; szPath : array[0..MAX_PATH] of char; aMalloc : IMalloc; begin Result := ''; Assert(aFolder <= CSIDL_PRINTHOOD, 'Falsche ShellFolder-Konstante'); OleCheck(SHGetSpecialFolderLocation(0, aFolder, pIIL)); SHGetPathFromIDList(pIIL, szPath); OleCheck(SHGetMalloc(aMalloc)); aMalloc.Free(pIIL); Result := szPath; end; |