最近使ったファイルに追加する

VB側のサイトや雑誌なんかではよく目にするAPIなんですが、いざ Delphiで使ってみようと思ったら ShellApiに宣言文が含まれていない事に気が付く!最近使ったファイルに追加するには SHAddToRecentDocs APIを使用します。以下の例は自分自身(exe)を追加しています。ファイル名の代わりに nilを渡すと最近使ったファイルを全てクリアします。

その後の調べでこのAPIがShlObjユニットにある事が分かりました!ですので uses節に ShlObjを追加し、以下の "//これを追加" のコメントの後ろに※が付いている行は省略して構いません。

■ 最近使ったファイルに追加する例
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ShellApi;  //これを追加

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

procedure SHAddToRecentDocs(uFlags : Integer; pv : PChar); stdcall; //これを追加 
const
  SHARD_PIDL     =     $0001;  //これを追加 
  SHARD_PATH     =     $0002;  //これを追加 

var
  Form1: TForm1;

implementation

procedure SHAddToRecentDocs; external shell32 name 'SHAddToRecentDocs';  //これを追加 

{$R *.DFM}

//-------------------------------------------------
//  追加
//-------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
  intFlag  :  integer;
  strPath  :  string;
begin
  intFlag     :=     SHARD_PATH;
  strPath     :=     Application.ExeName;
  SHAddToRecentDocs(intFlag,PChar(strPath));
end;

//-------------------------------------------------
//  クリア
//-------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
var
  intFlag  :  integer;
begin
  intFlag     :=     SHARD_PATH;
  SHAddToRecentDocs(intFlag,nil);
end;

end.