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

Программно создать ярлык 3

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

Программно создать ярлык 3


Автор: Nomadic

Пpогpаммист увидел HЛО:
- У кого-то диск полетел...


function CreateShortcut(const CmdLine, Args, WorkDir, LinkFile: string):
  IPersistFile;
var
  MyObject: IUnknown;
  MySLink: IShellLink;
  MyPFile: IPersistFile;
  WideFile: WideString;
begin
  MyObject := CreateComObject(CLSID_ShellLink);
  MySLink := MyObject as IShellLink;
  MyPFile := MyObject as IPersistFile;
  with MySLink do
  begin
    SetPath(PChar(CmdLine));
    SetArguments(PChar(Args));
    SetWorkingDirectory(PChar(WorkDir));
  end;
  WideFile := LinkFile;
  MyPFile.Save(PWChar(WideFile), False);
  Result := MyPFile;
end;

procedure CreateShortcuts;
var
  Directory, ExecDir: string;
  MyReg: TRegIniFile;
begin
  MyReg := TRegIniFile.Create(
    'Software\MicroSoft\Windows\CurrentVersion\Explorer');

  ExecDir := ExtractFilePath(ParamStr(0));
  Directory := MyReg.ReadString('Shell Folders', 'Programs', '') + '\' +
    ProgramMenu;

  CreateDir(Directory);
  MyReg.Free;

  CreateShortcut(ExecDir + 'Autorun.exe', '', ExecDir,
    Directory + '\Demonstration.lnk');
  CreateShortcut(ExecDir + 'Readme.txt', '', ExecDir,
    Directory + '\Installation notes.lnk');
  CreateShortcut(ExecDir + 'WinSys\ivi_nt95.exe', '', ExecDir,
    Directory + '\Install Intel Video Interactive.lnk');
end;

Разберешься?

Гм. Вообще правильнее в процедуре CreateShortcuts пользовать Win32API::GetSpecialFolderLocation с нужным параметром (CSIDL_PROGRAMS в случае папки "Программы", или CSIDL_DESKTOP в случае "Рабочего стола").

Да, я помогу вам разобрать код и добавить дополнительные комментарии.

Код написан на языке Delphi Pascal и использует COM (Component Object Model) для создания ярлыков. Главная функция - CreateShortcut, которая принимает четыре параметра:

  • CmdLine: аргумент командной строки
  • Args: массив аргументов
  • WorkDir: рабочий каталог
  • LinkFile: имя файла для ярлыка

Функция создает объект COM типа IShellLink и присваивает его переменной MySLink. Затем она настраивает свойства ярлыка с помощью методов, таких как SetPath, SetArguments и SetWorkingDirectory. Наконец, она сохраняет ярлык в файле с помощью интерфейса IPersistFile.

Вторая процедура - CreateShortcuts, которая создает три ярлыка:

  • Ярлык к исполняемому файлу с именем "Autorun.exe"
  • Ярлык к текстовому файлу с именем "Readme.txt"
  • Ярлык к исполняемому файлу с именем "ivi_nt95.exe"

Для создания ярлыков процедура использует функцию CreateShortcut и предоставляет необходимые параметры.

Ваше предложение использовать GetSpecialFolderLocation - это более надежный способ получить путь каталога Program Files или Desktop. В целом, рекомендуется использовать этот API вместо использования жестких путей или переменных окружения.

Вот обновленная версия кода, которая использует GetSpecialFolderLocation:

procedure CreateShortcuts;
var
  Directory, ExecDir: string;
  MyReg: TRegIniFile;
begin
  MyReg := TRegIniFile.Create(
      'Software\Microsoft\Windows\CurrentVersion\Explorer');

  ExecDir := ExtractFilePath(ParamStr(0));
  Directory := SHGetKnownFolderPath(CSIDL_PROGRAMS, 0, nil, PChar(Result));

  CreateDir(Directory);
  MyReg.Free;

  CreateShortcut(ExecDir + 'Autorun.exe', '', ExecDir,
    Directory + '\Demonstration.lnk');
  CreateShortcut(ExecDir + 'Readme.txt', '', ExecDir,
    Directory + '\Installation notes.lnk');
  CreateShortcut(ExecDir + 'WinSys\ivi_nt95.exe', '', ExecDir,
    Directory + '\Install Intel Video Interactive.lnk');
end;

Замените жесткие пути на вызовы SHGetKnownFolderPath, который возвращает путь каталога Program Files. Я также удалил переменную ProgramMenu, так как она не необходима в этом случае.

Надеюсь, это поможет вам лучше понять код и его работу!

Программно создать ярлык на компьютере, к примеру, в папке 'Программы' или на рабочем столе.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 08:54:02/0.0059449672698975/0