Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.30;
Скачать: CL | DM;

Вниз

как создать ярлык   Найти похожие ветки 

 
Antoshka   (2006-04-14 19:11) [0]

Господа, поможите! Хочу создать ярлык. Делаю так, как  FAQ написано:

uses ShlObj, ComObj, ActiveX;

procedure CreateLink(const PathObj, PathLink, Desc, Param: string);
 var
   IObject: IUnknown;
   SLink: IShellLink;
   PFile: IPersistFile;
 begin
   //Компилятор ругается так: Incompatable types: ‘IUnknown’ and ‘IInterface’      
   IObject := CreateComObject(CLSID_ShellLink);
   SLink := IObject as IShellLink;
   PFile := IObject as IPersistFile;
   with SLink do begin
     SetArguments(PChar(Param));
     SetDescription(PChar(Desc));
     SetPath(PChar(PathObj));
   end;
   PFile.Save(PWChar(WideString(PathLink)), FALSE);
 end;


В чём дело? Подскажите, кто может.


 
Palladin ©   (2006-04-14 19:44) [1]

:) Ну кто откуда может знать зачем же ты делаешь как в FAQ написано


 
PZ   (2006-04-14 20:36) [2]

Я использовал процедуру (не помню откуда позаимствовал):
procedure TForm1.SetIcon();
Var
 MyObject  : IUnknown;
 MySLink   : IShellLink;
 MyPFile   : IPersistFile;
 Directory : String;
 WFileName : WideString;
 MyReg     : TRegIniFile;
begin
 MyObject := CreateComObject(CLSID_ShellLink);
 MySLink := MyObject as IShellLink;
 MyPFile := MyObject as IPersistFile;
 With MySLink do
 begin
   SetPath(PChar(FileName));
   SetDescription(PChar(Description));
   SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
 end;
 MyReg := TRegIniFile.Create(
          "Software\MicroSoft\Windows\CurrentVersion\Explorer");

// Используйте следующую строчку кода для создания ярлыка
//   на рабочем столе

 Directory := MyReg.ReadString("Shell Folders","Desktop","");

// Используйте следующие три строчки для создания ярлыка
//    в главном меню
//  Directory := MyReg.ReadString("Shell Folders","Start Menu","")+
//      "\Рулез!";
//  CreateDir(Directory);

 WFileName := Directory+"\View_BD.lnk";
 MyPFile.Save(PWChar(WFileName),False);
 MyReg.Free;
end;      { TForm1.SetIcon }


 
Antoshka   (2006-04-14 21:24) [3]

Хм, спасибо, конечно… Но проблема в том, что компилятор на первой же строчке ругается.
CreateComObject(CLSID_ShellLink) каким то боком возвращает Iinterface!
Приведением типов я ничего хорошего не добился. Может быть это как-то по другому можно сделать?


 
kernel ©   (2006-04-15 17:46) [4]

Так, как FAQ написано - все работает. Я сам этой функцией пользовался часто и всегда эффект был (по крайней мере у меня) положительным. Смотри ошибки в другом месте...



Страницы: 1 вся ветка

Текущий архив: 2006.07.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
15-1151649881
MBo
2006-06-30 10:44
2006.07.30
Пятничные похождения Васи Пупкина и другие задачки ;)


1-1150289355
Nicky
2006-06-14 16:49
2006.07.30
Как написать код, чтобы открывался файл справки при инсталляции


2-1152717858
СерегаВЕБ
2006-07-12 19:24
2006.07.30
Не показывать форму на панели задач


2-1152461297
J_SABER
2006-07-09 20:08
2006.07.30
поле key в valuelisteditor


15-1151572526
Жук
2006-06-29 13:15
2006.07.30
"Русский шоколад" в Иваново