Как создавать ярлыки (shortcuts)?
Техническая документация Borland (Borland Tech Doc) #3234
Данный демо-проект демонстрирует простое решение для добавления ярлыков (Shortcuts) на рабочий стол или в главное меню Windows 95 или Windows NT 4.0.
- Запустите Delphi.
- Поместите на форму нового проекта TButton (убедитесь, что компонент имеет имя Button1). Щелкните два раза на Button1. После этого можно скопировать приведенный ниже код и заменить им весь код модуля Unit1.
Код читает строковое значение из ключей регистра "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;
beginMyObject := 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]