由於我們是通過OLE Interface實現此功能的
在單元的聲明部分加入以下代碼
procedure CreateLink(ProgramPathProgramArg LinkPath Descr: String);
其中
ProgramArg是目標文件的參數;LinkPath是快捷方式的全路徑;Descr是對此快捷方式的描述
在單元的實現部分加入以下代碼
procedure CreateLink(ProgramPathProgramArg LinkPath Descr: String);
var
AnObj: IUnknown;
ShellLink: IShellLink;
AFile: IPersistFile;
FileName: WideString;
begin
if UpperCase(ExtractFileExt(LinkPath)) 〈〉 ′LNK′ then //檢查擴展名是否正確
begin
raise ExceptionCreate(′快捷方式的擴展名必須是 ′′LNK′′!′);/
/若不是則產生異常
end;
try
OleInitialize(nil);//初始化OLE庫在使用OLE函數前必須調用初始化
AnObj := CreateComObject(CLSID—ShellLink);//根據給定的ClassID生成
一個COM對象此處是快捷方式
ShellLink := AnObj as IShellLink;//強制轉換為快捷方式接口
AFile := AnObj as IPersistFile;//強制轉換為文件接口
//設置快捷方式屬性此處只設置了幾個常用的屬性
ShellLinkSetPath(PChar(ProgramPath)); // 快捷方式的目標文件 一般
為可執行文件
ShellLinkSetArguments(PChar(ProgramArg));// 目標文件參數
ShellLinkSetWorkingDirectory(PChar(ExtractFilePath(ProgramPath)))
;//目標文件的工作目錄
ShellLinkSetDescription(PChar(Descr));// 對目標文件的描述
FileName := LinkPath;//把文件名轉換為WideString類型
AFileSave(PWChar(FileName) False);//保存快捷方式
finally
OleUninitialize;//關閉OLE庫此函數必須與OleInitialize成對調用
end;
end;
以上編寫了一個通用函數下面我們用它來創建快捷方式 在窗體中放置一
個按鈕雙擊按鈕寫入如下代碼即可
procedure TFormButton Click(Sender: TObject);
var
tmp: array [MAX—PATH] of Char;
WinDir: string;
begin
GetWindowsDirectory(tmpMAX—PATH);
WinDir:=String(tmp);
if Length(WinDir) 〉then
WinDir:=WinDir+′\′;//得到Windows的目錄
//在桌面上放置本程序的快捷方式
CreateLink(ParamStr() ′′ WinDir+′desktop\′+Application Tit
le+′lnk′ ′Application Title′);
end;
From:http://tw.wingwit.com/Article/program/Delphi/201311/24825.html