Главная страница
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.47 MB
Время: 0.029 c
15-1149581607
serko
2006-06-06 12:13
2006.07.30
Internet Explorer и Opera


2-1152130963
<X>
2006-07-06 00:22
2006.07.30
Синтаксис


15-1151994255
IceBeerg
2006-07-04 10:24
2006.07.30
Компьютер заводской сборки?


2-1152213937
malyar
2006-07-06 23:25
2006.07.30
какой прогой следить за DLL


1-1150444906
Max4
2006-06-16 12:01
2006.07.30
Перехват сообщения от клавы