ShellExecuteは外部ファイルを開いたりするAPIです。
とりあえずtotonicaのソフトのようなHTMLのヘルプをやっているなら、
これを知らないとヘルプファイルを開くという機能を実装できません。
何気に応用範囲が広いので結構便利です。
とりあえず以下は昔掲載していたネタの通り。
−−
Delphiはchm形式のヘルプならばIDEの方で設定することができますが、HTML形式のヘルプは開くことができません。
そんな時役に立つのがこのShellExecuteというWindows API。
こいつを使うと、htmlが関連付けされたアプリケーションを使用して、
ファイルを表示することができます。
(totonicaの場合はIEが起動します。)
例1:HTMLのヘルプを開く
最初の例として、ヘルプ用のHTMLファイルを開いてみます。
実行フォルダにmanualというフォルダを作って、その中にヘルプファイルがあるとします。
ヘルプファイル名はmanual.htmとします。(中身はテキトーでいいです)
イベントはボタンクリックでもいいし、特定のメニュー項目をクリックした時でいいでしょう。
まず、uses節にShellAPIを追加します。
//仮にButton1クリックで起動するとします
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute( handle , PChar('open') , PChar('manual.htm') , nil,
PChar(ExtractFilePath(Application.ExeName)+'manual\') , 0);
end;
カッコ内を順番に説明していくと、
最初の『handle』の場所はウィンドウハンドルです。
(handle実際はForm1.handleのことです。)
次の『PChar('open')』の場所は実行する操作です。
この場合はファイルを開いています。
次はファイル名です。前述したとおり、manual.htmを指定しています。
次は実行時パラメーターですが、今回は指定する必要がないので、nilと入力します。
次はフォルダの指定です。ExtractFilePath(Application.ExeName)で
実行ファイルのあるフォルダを所得して、さらにmanualというフォルダを指定しています。
最後はアプリケーションを表示するかどうかの指定です。今回は0でOKです。
実行してボタンを押すと、ブラウザが開いてHTMLが表示されるはずです。
例2:特定のウェブサイトにジャンプする
今度はバージョン情報とかでよくある作者サイトへジャンプさせる方法です。
//またまたButton1クリックで起動
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute( handle , PChar('open') ,
PChar('ジャンプさせたいURL') , nil , nil , 0);
end;
ファイル名のところがURLに置き換わっています。
実行してクリックすると、ブラウザが起動して指定したURLにジャンプします。
これは結構便利です。
これを応用して、URLのところをmailto:メールアドレスに変えると、
今度はメーラーが起動します。
バージョン情報なんかにはうってつけです。
以上が使い回し。以下から新ネタです。
例3:特定のフォルダを開く
ShellExecuteを使うとランチャーソフトのファイラー機能のように、
特定のフォルダを開くことも可能です。
//またまたButton1クリックで起動
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute( handle , PChar('explore') ,
PChar('開きたいフォルダのパス') , nil , nil , SW_SHOWNORMAL);
end;
2番目の引数をopenからexploreに変え、
ファイル名に開きたいフォルダのパスを指定すればフォルダが開きます。
とりあえず知ってることはこの辺くらいです。
MSDNとかのドキュメントには詳しく仕様が載っているので、
興味があったら覗いておくと吉です。