<p>客先でショートカットの内容を判断して書き換える必要に迫られまして･･･<br />
同じようなアプリを置き換えるときに探してショートカットも置き換えてねと&hellip;<br />
よく考えたらExcelからOpenOfficeに変えてもExcelにドキュメントを引数で渡すようなショートカットでなく、素直にドキュメントへのショートカットを作っておけば対応できるアプリが普通に対応してくれるんですけどね。</p>
<p>と愚痴っても仕方がないので、まずは一般的なショートカットの作成方法</p>
<p>uses に <strong>ActiveX, ComObj, ShlObj</strong> を追加する必要があるので忘れず追加！</p>
<pre class="brush: delphi;">
/// <summary>ショートカットの作成</summary>
/// <param name="ShortcutPath">ショートカットのファイル名</param>
/// <param name="ExecFilePath">コマンドライン文字列(ファイル名)</param>
/// <param name="Params">コマンドライン文字列(引数)</param>
/// <param name="WorkingDir">作業場所文字列(引数)</param>
/// <param name="Description">説明文字列</param>
function CreateShortCut(const ShortcutPath: String;
                        const ExecFilePath: String;
                        const Params: String;
                        const WorkingDir: String = '';
                        const Description: String = ''): Boolean;
var
  ShellLink: IShellLink;
  PersistFile: IPersistFile;
{&#36;IFDEF Unicode}
  FileName: String;
{&#36;ELSE}
  FileName: WideString;
{&#36;ENDIF}
begin
  // Create shell link object
  // Get IShellLink/IPersistent inferface
  ShellLink := CreateComObject(CLSID_ShellLink) as IShellLink;
  PersistFile := ShellLink as IPersistFile;
  // Set path to shell link 
  ShellLink.SetPath(PChar(ExecFilePath));

  // Set arguments to shell link
  ShellLink.SetArguments(PChar(Params));

  // Set description string
  ShellLink.SetDescription(PChar(Description));

  // Set working directory
  ShellLink.SetWorkingDirectory(PChar(WorkingDir));

  // Set location (path and index) of the icon
  ShellLink.SetIconLocation(PChar(ExecFilePath), 0);

  // Save to file
  FileName := ShortcutPath;
{&#36;IFDEF Unicode}  
  Result := Succeeded(PersistFile.Save(PChar(FileName), True));
{&#36;ELSE}
  Result := Succeeded(PersistFile.Save(PWChar(FileName), True));
{&#36;ENDIF}
end;</pre>