AsuYuHomepage
トップページ サイトの説明 子供の成長記録 JM BAR Delphi リンク集
Home>>プログラミング>>Tips&Tricks>>ファイルを指定のプログラムから開く
Delphi Tips
Delphi Win32API
ダウンロード

Delphi Tips & Tricks

ファイルを指定のプログラムから開く

 エクスプローラ上でファイルを右クリックすると出てくる、メニュー内に「プログラムから開く」という項目があります。
 プログラムから実現するには、ShellExecute関数の実行時引数のパラメータにファイル名を指定して実行します。しかしファイルのパスに空白(C:\Program Filesみたいに)が入っていると、空白の部分で切れてしまい、正しく実行ファイルに渡されません。期待通りの動作をさせるには一工夫が必要なんです。
procedure TForm1.Button1Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
 //実行時引数に指定するファイル名を「"」でかこむ
   ShellExecute(Handle, 'OPEN', 'C:\WINDOWS\notepad.exe',
                PChar('"'+OpenDialog1.FileName+'"'), 
                ExtractFilePath(OpenDialog1.FileName), SW_NORMAL);
end;

 上のサンプルは、ダイアログで選択されたファイルを「メモ帳」で開くサンプルです。一応何のファイルでも開けますが読めるように表示されるのはテキスト形式のファイルのみです。
 ファイル名に空白が含まれていてもいいようにするには、ShellExecute関数第4パラメータの実行時引数に渡すファイル名を「"」(ダブルクォーテンション)で囲む処理が必要です。
 これでどんなファイル名でも存在しているファイルならプログラムから開く動作ができるようになります。

//追記
第5引数で、作業ディレクトリを実行ファイルのあるフォルダにしておくといいと思います。