Советы по Delphi

         

Как создавать ярлыки (shortcuts)?


Техническая документация Borland (Borland Tech Doc) #3234

Данный демо-проект демонстрирует простое решение для добавления ярлыков (Shortcuts) на рабочий стол или в главное меню Windows 95 или Windows NT 4.0.

  1. Запустите Delphi.
  2. Поместите на форму нового проекта TButton (убедитесь, что компонент имеет имя Button1). Щелкните два раза на Button1. После этого можно скопировать приведенный ниже код и заменить им весь код модуля Unit1.
Программа создаст ярлык на рабочем столе или (смотри код) в главном меню. Ярлык будет иметь имя FooBar и при щелчке загрузит ваш AUTOEXEC.BAT в блокнот (NOTEPAD).

Код читает строковое значение из ключей регистра "Desktop" и "Start Menu" (ветка HKEY_CURRENT_USER), полный путь к которым:

Software\MicroSoft\Windows\CurrentVersion\Explorer\Shell Folders

-------------
Модуль Unit1
-------------

   

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var
Form1: TForm1;
implementation

{$R *.DFM}

uses
ShlObj, ActiveX, ComObj, Registry;
procedure TForm1.Button1Click(Sender: TObject);
var
MyObject  : IUnknown; MySLink   : IShellLink; MyPFile   : IPersistFile; FileName  : String; Directory : String; WFileName : WideString; MyReg     : TRegIniFile; begin
MyObject := CreateComObject(CLSID_ShellLink); MySLink := MyObject as IShellLink; MyPFile := MyObject as IPersistFile; FileName := 'NOTEPAD.EXE'; with MySLink do begin SetArguments('C:\AUTOEXEC.BAT'); SetPath(PChar(FileName)); 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+'\FooBar.lnk'; MyPFile.Save(PWChar(WFileName),False); MyReg.Free; end;

end.

[000080]



Содержание раздела