最近使ったファイルに追加する
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.
|