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

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

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

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


uses 
  Registry, 
  ActiveX, 
  ComObj, 
  ShlObj; 

type 
  ShortcutType = (_DESKTOP, _QUICKLAUNCH, _SENDTO, _STARTMENU, _OTHERFOLDER); 

function CreateShortcut(SourceFileName: string; // the file the shortcut points to 
                        Location: ShortcutType; // shortcut location 
                        SubFolder,  // subfolder of location 
                        WorkingDir, // working directory property of the shortcut 
                        Parameters, 
                        Description: string): //  description property of the shortcut 
                        string; 
const 
  SHELL_FOLDERS_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\Explorer'; 
  QUICK_LAUNCH_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\GrpConv'; 
var 
  MyObject: IUnknown; 
  MySLink: IShellLink; 
  MyPFile: IPersistFile; 
  Directory, LinkName: string; 
  WFileName: WideString; 
  Reg: TRegIniFile; 
begin 

  MyObject := CreateComObject(CLSID_ShellLink); 
  MySLink := MyObject as IShellLink; 
  MyPFile := MyObject as IPersistFile; 

  MySLink.SetPath(PChar(SourceFileName)); 
  MySLink.SetArguments(PChar(Parameters)); 
  MySLink.SetDescription(PChar(Description)); 

  LinkName := ChangeFileExt(SourceFileName, '.lnk'); 
  LinkName := ExtractFileName(LinkName); 

  // Quicklauch 
  if Location = _QUICKLAUNCH then 
  begin 
    Reg := TRegIniFile.Create(QUICK_LAUNCH_ROOT); 
    try 
      Directory := Reg.ReadString('MapGroups', 'Quick Launch', ''); 
    finally 
      Reg.Free; 
    end; 
  end 
  else 
  // Other locations 
  begin 
    Reg := TRegIniFile.Create(SHELL_FOLDERS_ROOT); 
    try 
    case Location of 
      _OTHERFOLDER : Directory := SubFolder; 
      _DESKTOP     : Directory := Reg.ReadString('Shell Folders', 'Desktop', ''); 
      _STARTMENU   : Directory := Reg.ReadString('Shell Folders', 'Start Menu', ''); 
      _SENDTO      : Directory := Reg.ReadString('Shell Folders', 'SendTo', ''); 
    end; 
    finally 
      Reg.Free; 
    end; 
  end; 

  if Directory <> '' then 
  begin 
    if (SubFolder <> '') and (Location <> _OTHERFOLDER) then 
      WFileName := Directory + '\' + SubFolder + '\' + LinkName 
    else 
      WFileName := Directory + '\' + LinkName; 


    if WorkingDir = '' then 
      MySLink.SetWorkingDirectory(PChar(ExtractFilePath(SourceFileName))) 
    else 
      MySLink.SetWorkingDirectory(PChar(WorkingDir)); 

    MyPFile.Save(PWChar(WFileName), False); 
    Result := WFileName; 
  end; 
end; 

function GetProgramDir: string; 
var 
  reg: TRegistry; 
begin 
  reg := TRegistry.Create; 
  try 
    reg.RootKey := HKEY_CURRENT_USER; 
    reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False); 
    Result := reg.ReadString('Programs'); 
    reg.CloseKey; 
  finally 
    reg.Free; 
  end; 
end; 

// Some examples: 

procedure TForm1.Button1Click(Sender: TObject); 
const 
 PROGR = 'c:\YourProgram.exe'; 
var 
  resPath: string; 
begin 
  //Create a Shortcut in the Quckick launch toolbar 
  CreateShortcut(PROGR, _QUICKLAUNCH, '','','','Description'); 

  //Create a Shortcut on the Desktop 
  CreateShortcut(PROGR, _DESKTOP, '','','','Description'); 

  //Create a Shortcut in the Startmenu /"Programs"-Folder 
  resPath := CreateShortcut(PROGR, _OTHERFOLDER, GetProgramDir,'','','Description'); 
  if resPath <> '' then 
  begin 
    ShowMessage('Shortcut Successfully created in: ' + resPath); 
  end; 
end;

Привет! Я перевёл текст о коде на Delphi, который создает ярлыки на рабочем столе, панели быстрого запуска и меню "Пуск" в Windows.

Типы Тип ShortcutType определяет пять возможных мест для создания ярлыка: _DESKTOP, _QUICKLAUNCH, _SENDTO, _STARTMENU и _OTHERFOLDER.

Функции Функция CreateShortcut: Создает ярлык в указанном месте с конкретными свойствами. Она принимает следующие параметры:

  • SourceFileName: Файл, к которому ссылается ярлык.
  • Location: Место, где создавать ярлык (например, рабочий стол, панель быстрого запуска, меню "Пуск").
  • SubFolder: Подпапка в указанном месте (опционально).
  • WorkingDir: Рабочая папка для ярлыка (опционально).
  • Parameters: Дополнительные параметры для ярлыка (опционально).
  • Description: Описание для ярлыка.

Функция возвращает путь к созданному файлу ярлыка. Функция GetProgramDir: Возвращает путь к папке "Программы" в реестре Windows.

Пример использования В примере кода создается три ярлыка: 1. Ярлык к c:\YourProgram.exe на панели быстрого запуска. 2. Ярлык к c:\YourProgram.exe на рабочем столе. 3. Ярлык к c:\YourProgram.exe в папке "Программы" меню "Пуск".

Третий пример использует функцию GetProgramDir, чтобы получить путь к папке "Программы" и передать его как параметр функции CreateShortcut.

Замечания

  • Код использует COM-объекты для взаимодействия с функциональностью оболочки Windows.
  • Компонент TRegIniFile используется для чтения и записи настроек реестра.
  • Интерфейс IPersistFile используется для сохранения файла ярлыка.
  • Интерфейс IShellLink используется для установки свойств для ярлыка.

В целом, этот код предоставляет удобный способ создавать ярлыки в различных местах на рабочем столе Windows.

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:01:23/0.017122030258179/1