Главная страница
    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.013 c
1-1150875962
hbreaker
2006-06-21 11:46
2006.07.30
перечисления..


15-1151432483
JUS
2006-06-27 22:21
2006.07.30
Модераторам


3-1148570840
Karburator
2006-05-25 19:27
2006.07.30
Крякозябры в компоненте DBGridEh


2-1152683429
general
2006-07-12 09:50
2006.07.30
При печати из TPrinter кириллицы выходят кракозябры


15-1147385958
Fantasy
2006-05-12 02:19
2006.07.30
Delphi 10 Lite





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский