![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте.
Делаю программку, с помощью которой можно будет настраивать свойство ярлыка. В программе я указываю путь к exe файлу, который мне придется дублировать(кинуть на раб. стол) и изменить его свойства. Всё это я уже сделал. Мне осталось лишь научить программу менять иконку ярлыка. Вытащить иконку с любого ярлыка я могу, но вот вставить в свой(дублированный ярлык) не могу. Прошу помощи. Хочу привести код, с которым я редактирую свойства ярлыка. Код:
procedure TForm1.createshotcut(sourcefile, shortcutname, sourceparams: string); var IUnk: IUnknown; ShellLink: IShellLink; ShellFile: IPersistFile; tmpShortCutName: string; WideStr: WideString; i: Integer; begin IUnk := CreateComObject(CLSID_ShellLink); ShellLink := IUnk as IShellLink; ShellFile := IUnk as IPersistFile; ShellLink.SetPath(PChar(SourceFile)); ShellLink.SetArguments(PChar(SourceParams)); ShellLink.SetWorkingDirectory(PChar(ExtractFilePath(SourceFile))); ShortCutName := ChangeFileExt(ShortCutName,'.lnk'); if fileexists(ShortCutName) then begin ShortCutName := copy(ShortCutName,1,length(ShortCutName)-4); i := 1; repeat tmpShortCutName := ShortCutName +'(' + inttostr(i)+ ').lnk'; inc(i); until not fileexists(tmpShortCutName); WideStr := tmpShortCutName; end else WideStr := ShortCutName; ShellFile.Save(PWChar(WideStr),False); end; procedure TForm1.sButton2Click(Sender: TObject); var WorkTable:String; P:PItemIDList; C:array [0..1000] of char; begin if SHGetSpecialFolderLocation(Handle,CSIDL_DESKTOP,p)=NOERROR then begin SHGetPathFromIDList(P,C); WorkTable:=StrPas(C); end; if FileExists(WorkTable+'\'+ExtractFileName(Application.ExeName)) then DeleteFile(WorkTable+'\'+ExtractFileName(Application.ExeName)); CreateShotCut(sEdit1.Text, WorkTable+'\'+ExtractFileName(sEdit2.Text), sEdit3.Text); end; procedure TForm1.sButton1Click(Sender: TObject); begin if sopendialog1.Execute then S:=sOpenDialog1.FileName; sedit1.Text:=S; sButton2.Enabled:=True; end; Каким образом я могу изменить иконку создаваемого ярлыка ? По стандарту иконка остается от оригинала. Спасибо. |