コマンドラインの使われ方

前回でパスの話をやったので、ついでです。今回はまったくAPIなどはありません。

・WinMainの第3引数 lpCmdLine

WinMain 関数には4個のパラメータがあることは周知の通りですが、
今回はその第三引数 LPWSTR lpCmdLine について注目してみたいと思います。

コマンドラインは、そのプログラムが起動した時に
付属しているパラメータ、みたいなものですかね。
この値の内容によって動作を変えることができます。

//==============================
//  一番はじめに実行される関数
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPWSTR lpCmdLine, int iCmdShow)
     {
     ・・・・・・

     //コマンドライン
     MessageBox(hwnd,lpCmdLine,_T("Command Line"),MB_YESNO|MB_ICONQUESTION);

     while (GetMessage (&msg, NULL, 0, 0))
          {
          ・・・・・・

メッセージループに入る前に、メッセージボックスにコマンドラインの値を表示するプログラムです。
まずはこのプログラムを実行してみましょう。
すると、メッセージボックスの内容は何も表示されません。
当然、コマンドラインに値がないからですね。
では、コマンドラインに値を与えるにはどうすればいいのでしょうか?

・ショートカットのリンク先

その1として、ショートカットのリンク先やCMDを使う方法があります。
CMDは省略するとして、ショートカットのリンク先を変えるためには
プロパティをいじる必要がありますが、既存のエクスプローラでは無理ですね。
そこで、GreenSoftwareさんのGSFinder というソフトを使います。

GSFinder

まずは目的のプログラムのショートカットを作り、ショートカットのプロパティを
表示して、リンク先の「"プログラム名.exe"」の右側に文字を追加します。
では、このショートカットを実行してみましょう。

ショートカットからのコマンドライン利用

ショートカットの文字列をちゃんと受け取っていますね。
また、日本語の文字も正確に表示されています。

・関連付けしたファイルから「開く」

では次は、別のファイルから関連付けを行ってこのプログラムを表示してみましょう。
直接レジストリを操作して関連付けを行ってもいいのですが
TillanosoftさんのPocketTweak というソフトを使うのが便利なので、こちらを使います。

PocketTweak

一例として、拡張子がh というファイルに今回のプログラムを関連付けします。
これでこの.h ファイルを開こうとすると このプログラムが呼ばれるようになりました。
では、手ごろな.h ファイルを開いてみてください。

関連付けのコマンドライン利用

すると、なんと.h ファイルのフルパスを取得することが出来ました。
テキストエディタなどは、簡単に言えばテキストファイルから「開く」で呼ばれて
そのテキストファイルの名前を取得し、file操作関数でそのファイルの内容を取得して表示するわけですね。
そこらへんの表示処理を頑張ればテキスト、画像エディタなどが作れるわけです。

ソースの表示

2005/6/12


戻る