shex shex.exe 説明書

最終改訂:2003年3月1日
Kamiのひろば

目次

概要  − shex.exeは何のために使うプログラムなのかを簡単にご紹介
単体での使用方法  − 使用方法の説明。むしろ、AUTORUN.INFに指定して使用するを先に読む方が良いかも
AUTORUN.INFに指定して使用する  − CD-Rなどにshex.exeを焼いて使用する具体例での説明
shex.exeの動作(技術資料)  − 簡単なプログラムですが、一応何をしているかを説明しています
動作環境  − shex.exeの動作環境の説明です
更新情報 − バージョンアップ時の変更点などを説明しています。
使用上の注意  − これを守っていただける方のみがshex.exeを使用できます
著作権・使用料金  − 著作権表示などです
お問い合わせ  − shex.exeについてのお問い合わせ先や方法の説明です

概要

 shex.exeはアプリケーションと関連付けされている拡張子を持つファイルを開くプログラムです。関連付けされているファイルは通常エクスプローラでダブルクリックするなどで開くことができますので、通常はわざわざこんなプログラムを使用することはないのですが、自分で焼いたCD-R等で自動実行機能を実現したい場合に必要になることがあります。
 Windowsでは、CD-ROMドライブ等にメディアを挿入すると、AUTORUN.INFファイルで指定したプログラムを自動的に実行してくれる機能があり、これによってCD-ROMを挿入すると自動的にソフトウェアのインストーラーが実行できるなどの機能を実現できるのですが、自動的に実行できるのはプログラムだけです。つまり、文書ファイルなどを自動的に開くことはできないのです。よく考えれば、CD-ROMを挿入したコンピュータに必ず文書ファイルを開けるプログラムがインストールされているとは限らないので当たり前といえば当たり前です。しかし、個人使用の場合で該当するプログラムがコンピュータにインストールされていることが明らかな場合や、単なるテキストファイルやhtmlファイルなどのようにほぼ確実にどのコンピュータにもこれらのファイルを開くプログラムがインストールされていると期待できる場合には、文書ファイルも自動実行機能で開ける方が便利です。
 shex.exeは、これをAUTORUN.INFファイルと一緒にCD-R等に焼いておけばAUTORUN.INFファイル内でコマンドラインに指定した文書ファイルを開くプログラムです。機能は非常に少ないですが、20kBytesに満たないコンパクトさなのでこれをCD-Rに焼いてもほとんど容量を圧迫することはないでしょう。
 このプログラムは、もともと拙作の「履歴付き圧縮バックアッププログラムKamiBack」を用いて、CD-RWを挿入すれば自動的にそのCD-RWにハードディスク内容をバックアップするということを実現するために作成したものです。

単体での使用方法

1.単純に文書ファイルを開く

 次のような書式で実行すると、[document file]を開いたり、印刷したりします。処理内容は[command] で指定します。[command]に指定できるものは「open」「print」「explore」の3種類で、それぞれ [document file]を開く、印刷する、Windowsエクスプローラで開く([document file] がディレクトリの場合)ということを意味します。[command]は省略可能で、省略時には「open」が指定されたとみなされます。
shed.exe [command] [document file]
 例)shex.htm を開きます。大抵は、ネットスケープナビゲータやインターネットエクスプローラ等のWEBブラウザでshex.htmが開かれるでしょう。この例では、 [command]指定を省略していますので「open」が指定されたとみなされていますが、もちろん指定してもかまいません。
shed.exe shex.htm
(shed.exe open shex.htm としても同じ)

2.オプション指定付きで文書ファイルを開く

 次のような書式で実行すると、[document file]を開くときにプログラムに[options] を指定して実行します。[command]に指定できる文字列やこれを省略できることなどは1の場合と同じです。
shex.exe [command] [document file] [options]
 例)KamiBackによって「MyBackup.kbp」を開き、これに従ってバックアップを実行します。(.kbpファイルは、KamiBackがバックアップ内容を記録するファイルです。また、/Backupオプションはバックアップを実行することをKamiBackに指示しています。)
shex.exe MyBackup.kbp /Backup
 なお、この例ではshex.exeは次のようにプログラムを起動します。
KamiBack.exe MyBackup.kbp /Backup

3.プログラムを開く

 次のように引数にexeファイルを指定すると、そのプログラムを実行します。[.exe file]はもちろんプログラムのファイル名で、 [parameters]はプログラムへ渡す引数です。なお、プログラムの拡張子.exeは必ず指定しなければなりません。このようにすると、関連付けされていないファイルをプログラムで開くことができます。[command]に指定できる文字列やこれを省略できることなどは1の場合と同じです。
shex.exe [command] [.exe file] [parameters]
 例)メモ帳(notepad.exe)で「MyDocument.tekisuto」ファイルを開きます。.tekisutoファイルは通常メモ帳に関連付けされていないのですが、メモ帳を明示的に指定することで開くことができるのです。
shex.exe notepad.exe MyDocument.tekisuto

AUTORUN.INFに指定して使用する

 shex.exeは、CD-ROM等の自動再生機能で文書ファイルを開けるようにするためのプログラムです。このためには、shex.exeをCD-R等に焼くとともにAUTORUN.INFにshex.exeを指定する必要があります。次に、AUTORUN.INFの例を示して説明します。(CD-Rのルートディレクトリに「AUTORUN.INF」「shex.exe」「KamiBack.ico」「mybackup.kbp」の各ファイルを焼いたと仮定しています。)

[autorun]
open=shex.exe mybackup.kbp /backup
icon=KamiBack.ico
shell\verb0=バックアップ定義を開く
shell\verb0\command=shex.exe mybackup.kbp
shell\verb1=バックアップ
shell\verb1\command=shex.exe mybackup.kbp /backup
shell\verb2=履歴バックアップファイルの削除
shell\verb2\command=shex.exe mybackup.kbp /clearhistory


 1行目の「open=...」は、CD-Rなどをドライブに挿入した場合に自動実行するプログラムを指定する部分です。プログラムを実行する場合にはプログラムのファイル名を直接記述すればよいのですが、「mybackup.kbp」という文書ファイル(KamiBackのバックアップ内容を記録するファイル)を開く場合には直接これを指定することはできないので、shex.exeを使用しています。また、この例ではオプション「/backup」もKamiBackに引き渡します。結局、自動実行時には「KamiBack.exe mybackup.kbp /backup」が実行されることになるのです。

 2行目の「icon=...」は、CD-ROMドライブ等を表示するアイコンを指定します。

 3行目と4行目(以下、5行目と6行目なども同様)は対になっており、これらはエクスプローラー等でCD-ROMドライブアイコン等を右クリックした場合に表示されるポップアップメニューとメニューを選択したときに実行されるプログラムを指定しています。「shell\verb0=...」でCD-ROMドライブアイコン等をクリックした際に表示されるメニュー文字列を指定します。そして、「shell\verb0\command=...」でそのメニューを選択した際に実行されるプログラムを指定します。3行目と4行目の例ではメニューに「バックアップ定義を開く」が表示され、これを選択すると「shex.exe mybackup.kbp」が実行されます。これにより、「KamiBack.exe mybackup.kbp」が実行され、KamiBackは「mybackup.kbp」を開いた状態で起動します。(拡張子.kbpがKamiBack.exeに関連付けされている場合。)

shex.exeの動作(技術資料)

 shex.exeが具体的にどのような処理をするかを説明します。
  1. パラメータが1つだけの場合は、これを直接ShellExecute APIに引き渡す。実行内容は「open」が指定される。
  2. パラメータが2つ以上の場合は、第1引数が「open」「print」「explore」の場合はこれが [command]指定であるとみなす。これ以外の場合は[command]指定は省略されたものとしてopenが指定されたものとする。
  3. 次に、残りの引数の最初の引数の拡張子が「.exe」の場合にはこれがプログラムであるとみなし、これ以外の引数はこのプログラムに与えるべき引数であるとしてこれらをShellExecute APIに引き渡す。
  4. 2の残りの引数の最初の引数の拡張子が「.exe」以外の場合にはこれが文書ファイルであるとみなす。つぎに、これ以外に引数が指定されていない場合は、この引数を直接ShellExecute APIに引き渡す。
  5. 4で余分な引数が指定されている場合には、文書ファイル以外のオプションを指定していると解釈し、まず、文書ファイルを開くプログラムをFindExecutable APIで検索する。そして、見つかったプログラムをShellExecute APIに引き渡す。このとき、文書ファイルとオプションはまとめてプログラムへの引数とする。
  6. 1〜5について、正常にShellExecute APIが終了すればそのまま終了する。ShellExecute APIがエラーを返せば、エラーコードに応じたメッセージを表示してから終了する。
 以上で終わりで、非常に簡単なプログラムです。ソースファイルも公開していますので、詳しくはそちらを参照してください。

動作環境

 ほとんど、ShellExecute APIを呼び出すだけの処理しかしていませんので、Windows 95以上であれば多分問題なく動作すると思います。

更新情報

[Mar.1, 2003] ver.1.1.0.0
 自動実行をした場合にはカレントディレクトリがCD-ROMドライブルートになるが、「autorun.inf」に定義したコマンドをドライブアイコンの右クリックメニューから実行した場合にはカレントディレクトリがCD-ROMドライブルートにならないために、shex.exeから呼び出すプログラムが文書ファイルを発見できない場合がある問題点に対応。

使用上の注意

著作権・使用料金など

お問い合わせ

Kamiのひろば

以上