Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Создать ярлык объекта в любой папке

Delphi , Файловая система , Ярлыки

Создать ярлык объекта в любой папке

- Дискеты не нужны?
- А новые?
- Еще девочки.


procedure TForm1.Button1Click(Sender: TObject);
var
  MyObject: IUnknown;
  MyIcon: IShellLink;
  MyPFile: IPersistFile;
  FileName: string;
  Directory: string;
  WFileName: WideString;
  MyReg: TRegIniFile;
begin
  MyObject := CreateComObject(CLSID_ShellLink);
  MyIcon := MyObject as IShellLink;
  MyPFile := MyObject as IPersistFile;
  //Указать что является запускающей программой
  FileName := 'C:\Project.exe';
  with MyIcon do
  begin
    // Какой файл подвергаеться воздействию запускающей программы
    SetArguments('C:\Project.exe');
    //Установить путь к запускающему файлу
    SetPath(PChar(FileName));
    // Установить рабочую директорию
    SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
  end;
  MyReg :=
    TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');

  {Begin_Чтобы положить ярлык на Desktop}
  Directory := MyReg.ReadString('Shell Folders', 'Desktop', '');
  {End_Чтобы положить ярлык на Desktop}

  {Begin_Чтобы положить ярлык в start menu}
  //{Directory := MyReg.ReadString('Shell Folders','Start Menu','')+
  // '\Whoa!'; //CreateDir(Directory);
  {End_Чтобы положить ярлык в start menu}

  {Begin_Чтобы положить ярлык в любую директор.}
  //Directory := 'c:\windows\desktop';
  {End_Чтобы положить ярлык в любую директор.}

  WFileName := Directory + '/ShortCut1.lnk';
  MyPFile.Save(PWChar(WFileName), False);
  MyReg.Free;
end;

Вот перевод текста на русский язык:

Код Delphi, создает ярлык к исполняемому файлу в любом каталоге с помощью Windows Shell API. Вот разбивка кода:

Переменные и объекты

  • MyObject: экземпляр интерфейса IUnknown, который является базовым интерфейсом для всех COM-объектов.
  • MyIcon: экземпляр интерфейса IShellLink, который представляет ссылку или ярлык на файл или папку.
  • MyPFile: экземпляр интерфейса IPersistFile, который позволяет объекту сохранять свой состояние в файле.
  • FileName: путь и имя исполняемого файла, который будет связан с ярлыком.
  • Directory: каталог, где должен быть сохранен ярлык.
  • WFileName: полный путь и имя файла ярлыка (включая расширение).
  • MyReg: экземпляр класса TRegIniFile, который используется для чтения и записи значений реестра.

Создание ярлыка 1. Код создает новый экземпляр IShellLink с помощью функции CreateComObject с CLSID ShellLink. 2. Он устанавливает аргументы, путь и рабочий каталог для ярлыка с помощью методов SetArguments, SetPath и SetWorkingDirectory. 3. Рабочий каталог устанавливается в каталог, где находится исполняемый файл.

Сохранение ярлыка 1. Код сохраняет ярлык в файл с помощью метода Save интерфейса IPersistFile. 2. Полный путь и имя файла ярлыка (включая расширение) конструируются путем соединения каталога и имени файла. 3. Значение реестра для папки рабочего стола читается с помощью метода ReadString класса TRegIniFile. Это значение используется для определения, где сохранить ярлык.

Альтернативное решение Вместо жесткого кодирования пути каталога можно использовать функцию SHGetKnownFolderPath, чтобы получить путь известной папки (например, рабочего стола, панели старта) и затем соединить его с именем файла для конструирования полного пути. Этоapproach более гибок и позволяет настроить ярлык в большей степени. Вот пример:

function GetFolderPath(folder: TKnownFolder): string;
begin
  Result := SHGetKnownFolderPath(folder);
  if Result = '' then
    Result := '';
end;

Directory := GetFolderPath(TKnownFolder.Desktop);
WFileName := Directory + '\ShortCut1.lnk';

Код получает путь папки рабочего стола с помощью SHGetKnownFolderPath и затем соединяет его с именем файла для конструирования полного пути. Вы можете заменить TKnownFolder.Desktop на другие известные папки (например, TKnownFolder.StartMenu) для сохранения ярлыка в другом месте.

Создать ярлык объекта в любой папке, используя код на Delphi, который создает Com-объект ShellLink, указывает запускающую программу, путь к файлу и рабочую директорию.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Ярлыки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 00:53:23/0.031559944152832/1