FAQ一覧へ
インデックスへ
拡張子を関連付ける
質問
ファイルの拡張子を自分のアプリケーションに関連付けるにはどうしたら
よいのでしょうか。
答え
拡張子の関連付けはレジストリによって管理されています。
HKEY_CLASSES_ROOT
├拡張子(例:「.ext」)←ここにデータ格納先が入ります。
│ (例:「ext_auto_file」)
│
└データ格納先(例:「ext_auto_file」)
└shell ↑ここにファイルの種類が入ります。
└open
└command←ここにコマンドラインが入ります。
(例:「c:\Window\Notepad.exe "%1"」)
↑
(*注)| エクスプローラから自動で関連付けした場合、ここ|
|を「"」で括りませんが、ファイルが空白を含むパス |
|にあった場合コケますので「"」で括りましょう。 |
|この「%1」が関連付けられるファイル名となります。|
つまり上記のレジストリを書き込むコードが必要になります。
例
uses
Registry;
...............
var
Reg: TRegistry;
begin
MessageBeep(MB_ICONQUESTION);
if MessageDlg('××ファイルをこのソフトに関連付けますか?',
mtConfirmation,mbYesNoCancel,0)<> mrYes then exit;
Reg:= TRegistry.create;
with Reg do begin
try
RootKey:= HKEY_CLASSES_ROOT;
OpenKey('.ext', true);
WriteString('', 'ext_auto_file');
CloseKey;
OpenKey('ext_auto_file', true);
WriteString('', '××ファイル');
CloseKey;
OpenKey('ext_auto_file\shell\open\command', true);
WriteString('', ParamStr(0)+ ' "%1"');
CloseKey;
finally
free;
end;
end;
MessageBeep(MB_ICONASTERISK);
MessageDlg('拡張子「EXT」をこのソフトに関連付けました。'+ chr($A)+
'これ以降××ファイルをダブルクリックするだけで'+ chr($A)+
'このソフトが自動的に起動します。',mtInformation,[mbOk],0);
end;