Shell-DDEでショートカットを作成する

TDDEClientConvコンポーネントを使って、プログラムのグループとショートカットを作成する方法です。セットアッププログラムなどを作るときには便利かもしれません。なお、Shell DDEについては Delphi / C++Builderに添付の「Win32API日本語ヘルプ」に詳しく書かれています。

■ Shell DDEでショートカットを作成する例
  procedure TForm1.Button1Click(Sender: TObject);
  var
    strGroup    : string;
    strExeName  : string;
    strExeFile  : string;
    strMacro    : string;
  begin
    {  追加するグループとファイル名  }
    strGroup    :=    'My Favorite Tools';
    strExeName  :=    'DropTag';
    strExeFile  :=    'c:\tool\Droptag\Droptag.exe';
 
    {  DDEの準備 -> TDDEClientConv  }
    if  not DDEClientConv1.SetLink('PROGMAN','PROGMAN') then  begin
      Showmessage('DDE通信に失敗しちゃった。');
      exit;
    end;
 
    {  グループの作成  }
    strMacro  :=  '[CreateGroup(' + strGroup  + ')]';
    DDEClientConv1.ExecuteMacro(PChar(strMacro),False);
 
    {  グループの表示  }
    strMacro  :=  '[ShowGroup(' + strGroup  + ',1)]';
    DDEClientConv1.ExecuteMacro(PChar(strMacro),False);
 
    {  ファイルの追加  }
    strMacro  :=  '[AddItem("' + strExeFile + '","' + strExeName + '")]';
    DDEClientConv1.ExecuteMacro(PChar(strMacro),False);
 
    {  DDEの終了  }
    if  (Assigned(DDEClientConv1))  then  begin
      DDEClientConv1.CloseLink;
    end;
  end;

グループの追加には CreateGroupコマンドを使います。追加したグループはグループファイルとして保存されます。グループの表示には ShowGroupコマンドを使います。第2引数には表示形式を指定します。Win3.1の頃のインターフェイスなので「グループをアイコン表示でアクティブ化」などは意味が無いと思います。

操作
1 元のサイズで表示・アクティブ化
2 アイコン化で表示・アクティブ化
3 最大化で表示・アクティブ化
4 最後の状態で表示
5 アクティブにする
6 アイコン化
7 アイコン化
8 現在の状態で表示

ショートカットの追加には AddItemコマンドを使います。第1引数に追加するファイルの絶対パス、第2引数にショートカットの名前 (表示する名前) を指定します。この後はアイコンファイルのパスやインデックスを指定します。省略可能です。