Как создать двоичный LNK из Delphi? Все более и более функций Windows API обеспечены как COM интерфейсы. IShellLink — одная из них. Она может использоваться, чтобы создать ярлык на Рабочий Стол Windows.
uses activeX,comobj,shlobj;
const
IID_IPersistFile: TGUID =
(D1:$0000010B;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
function CreateLink(aPathObj,aPathLink,aDesc: string): boolean;
var sLink: IShellLink;
PersFile: IPersistFile;
begin
Result := false;
if SUCCEEDED(CoCreateInstance(CLSID_ShellLink, nil,
CLSCTX_INPROC_SERVER, IID_IShellLinkA, sLink)) then
begin
sLink.SetPath(PChar(aPathObj));
sLink.SetDescription(PChar(aDesc));
if SUCCEEDED(sLink.QueryInterface(IID_IPersistFile,PersFile)) then
begin
PersFile.Save(StringToOLEStr(aPathLink),TRUE);
Result := true;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not CreateLink('command.com',
'c:\temp\mylink.lnk','description...') then
begin
// errorhandling
end;
end;
Комментарии