2011/05/29 更新
Executable file Selector Exsel Ver.2.01 Copyright (C) 1998-2011 K.Takata 1.概要 MS-DOS と Windows で起動するプログラムを切り替えるためのプログラム です。 たとえば tar や nkf といったソフトは DOS 用のプログラムと Windows 用のプログラムがありますが、そのようなプログラムを、DOS が起動してい るときは DOS 用の、Windows が起動しているときは Windows 用のプログラ ムをというように、自動的に切り替えて起動するようにします。 切り替えて起動するプログラム1組ごとに1つのセレクタプログラムを生 成して使用します。 2.このプログラムの特徴 ・MS-DOS 起動時にはこのプログラム自体のメモリの使用量は0となり、起 動される側のプログラムはメモリを最大限利用することができます。 (Windows 起動時は Win32 コンソールプログラムなどを起動することを 意図しているため、メモリの使用量について最適化はしていません。) ・用途に合わせて DOS 形式、Win32 Console 形式、Win32 GUI 形式の3種 類のセレクタプログラムから、好きなものを選ぶことができます。 ・切り替えて起動するプログラム1組ごとに1つのセレクタプログラムを生 成する必要がありますが、セレクタプログラムのサイズは 1KiB 〜 2.5KiB と非常にコンパクトになっています。 3.動作環境 ・生成されたセレクタプログラム MS-DOS、Win95/98/2k/XP/Vista/7 など ・exsel.exe Win95/98/2k/XP/Vista/7 など 4.使用方法 exsel.exe をコマンドラインから実行することで、セレクタプログラムを 生成して使用します。 exsel.exe のコマンドラインパラメータは以下のようになっています。 > exsel [<option>] <execname> [<dosprog> [<winprog>]] <option> -nw : Windows 起動時はプログラムを起動しない -nd : DOS 起動時はプログラムを起動しない -k : <execname>, <dosprog>, <winprog> をキー入力 する -cvt : <execname> を新バージョンに変換する -td : DOS 形式のセレクタプログラムを生成する -tc : Win32 CUI 形式のセレクタプログラムを生成す る -tw,-w : Win32 GUI 形式のセレクタプログラムを生成す る <execname> 生成するセレクタプログラム名 <dosprog> MS-DOS 起動時に起動するプログラム名 <winprog> Windows 起動時に起動するプログラム名 【注】 ・<dosprog>, <winprog> は必ずフルパスで指定してください。拡張子も 必須です。 ・<dosprog> はショートファイル名で指定する必要があります。 ・<execname> の拡張子は省略可能です。(.com が省略されたと見なしま す。) ・セレクタプログラムの形式を指定しなかった場合は、-tc が指定された と見なし、Win32 CUI 形式で生成されます。(Ver.2.00 以降) 【例1】 基本使用例 ここでは例として DOS と Windows で tar を切り替えて使う場合の説 明をします。 a:\util\tar.exe が DOS 用の tar、a:\winutil\tar32.exe が Windows 用の tar とします。 コマンドラインから次のように入力するとカレントディレクトリに tar.com が生成されます。 > exsel tar a:\util\tar.exe a:\winutil\tar32.exe 生成された tar.com をパスが通っている適当なディレクトリにコピー してください。 これでコマンドラインから tar と入力すると、DOS が起動していると きは DOS 用の tar が、Windows が起動しているときは Windows 用の tar が起動するようになります。 【例2】 バージョンアップ・形式変換 以前のバージョンの exsel で生成したセレクタプログラムをバージョ ンアップするには、次のようにして -cvt オプションを使います。 > exsel -cvt tar.com -td, -tc, -tw (-w) のいずれかのオプションを同時に指定すると、出 力するセレクタプログラムの形式を指定できます。指定を省略すると、以 前のセレクタプログラムが DOS 形式と Win32 CUI 形式の場合は Win32 CUI 形式に変換され、Win32 GUI 形式の場合はそのまま Win32 GUI 形式 になります。 -cvt オプションを使う場合にはファイル名としてワイルドカードも使 用できます。 【例3】 コマンドラインランチャ 生成されたセレクタプログラムが PATH の通ったところに置いてさえあ れば、起動されるプログラムが PATH の通ったところになくとも、プログ ラム名を入力するだけで起動できるようになります。コマンドラインから 頻繁に起動するようなプログラムに対して、セレクタプログラムを生成し ておくことで、コマンドラインランチャとして使うこともできます。 Win32 GUI プログラムを起動したい場合には、セレクタプログラムを -tw オプションを指定して Win32 GUI 形式で生成しておくとよいでしょ う。こうすると余計な DOS 窓が開きません。 例えば、 > exsel -w ed c:\vz\vz.com "C:\Program Files\Hidemaru\Hidemaru.exe" というようにして、ed.com を生成して、PATH の通ったところに置いてお けば、DOS 上で ed と入力すれば Vz エディタが起動し、Windows のコマ ンドプロンプト等で ed と入力すれば秀丸エディタが起動するようになり ます。 Windows 上でしか使わないのであれば、 > exsel -nd -w hm.exe "C:\Program Files\Hidemaru\Hidemaru.exe" というように -nd を指定するのもよいでしょう。 5.動作解説 生成されたセレクタプログラムがどのプログラムを起動するかという設定 は、セレクタプログラムの内部に埋め込まれています。これにより、設定フ ァイル等を必要とせずに動作することができます。 DOS 形式のセレクタプログラムでは、いくつかのファンクションコールを 使って、現在 DOS 上で動いているか Windows 上で動いているかを判別し、 それに応じてどちらのプログラムを起動するかを決めています。 Win32 形式のセレクタプログラムでは、スタブプログラムを有効に活用し、 OS にどちらのプログラムを起動するかの判断を任せています。スタブプロ グラムについては、拙作の Stbhdr (*1) のドキュメントを参照してくださ い。 (*1) http://homepage3.nifty.com/k-takata/mysoft/stbhdr.html 6.コンパイル方法 このプログラムのコンパイルには LSI C-86 3.30c 試食版、Visual C++ 6.0、MASM 6.15 を利用しています。また、このほかに前述の Stbhdr が必 要です。 コンパイルする際には VC++、LSI C、Stbhdr に path が通っている状態 にしておいてください。 src.lzh を解凍したディレクトリで、コマンドラインから nmake と入力 すれば exsel.exe ができあがるはずです。 7.更新履歴 1998/12/28 Ver.1.11 ・最初の公開バージョン。 2000/01/21 Ver.1.12 ・スタック領域を 256bytes に拡大。前バージョンよりも安定して動作 するはず。 2000/12/31 Ver.1.12改 (非公開) ・セレクタプログラムのサイズを少し縮小。 2001/01/01 Ver.1.20 (非公開) ・セレクタプログラムの種類を DOS 形式から、Win32 Console 形式と Win32 GUI 形式に変更。 ・-w オプションを追加。 2005/12/04 Ver.2.00 ・Ver.1.12改 と Ver.1.20 を1つにまとめて、セレクタプログラムを DOS 版、Win32 Console 版、Win32 GUI 版の3つのどれでも使えるよ うに変更。(セレクタプログラム自体のバージョンは、DOS 版: 1.13、 Win32 版: 2.00) ・Win32 Console 版セレクタプログラムのサイズを縮小。 ・exsel.exe 自身を Win32 Console 形式に変更。 ・-nd, -td, -tc, -tw オプションを追加。 2011/05/29 Ver.2.01 ・avast! 6.0 が、安全でないアプリとして警告を出すのに対処。 8.注意事項、その他 ・このプログラムはフリーソフトウェアです。 ・このプログラムの著作権は作者である私 K.Takata(高田 謙)に帰属しま す。 ・もしこのプログラムを使用することで何らかの問題が発生しても作者はい っさいの責任を負いません。各自の責任で使用してください。 ・アーカイブを変更しない限り配布/転載は自由です。 ・ソースファイルの使用は非商用に限り自由です。 作者 : K.Takata(高田 謙) URL : http://webs.to/ken/ http://homepage3.nifty.com/k-takata/