Создать ярлык объекта в любой папке
|
- Дискеты не нужны?
- А новые?
- Еще девочки.
|
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;
|
|