Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.01 c
15-1151655445
Ломброзо
2006-06-30 12:17
2006.07.30
Плагин к IE или Opera


15-1151667458
blackcrazzy
2006-06-30 15:37
2006.07.30
Имитация дисконнекта.


1-1150728345
DJuce
2006-06-19 18:45
2006.07.30
Проверить путь к файлу - сетевой или локальный?


1-1150093819
atruhin
2006-06-12 10:30
2006.07.30
Как определить что drag&drop осуществляется в пределах приложения


15-1151640852
tButton
2006-06-30 08:14
2006.07.30
вот такое вот сообщение пришло... думаю...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский