>> WINAPI入門トップに戻る

コマンドライン引数の取得

今回はコマンドライン引数の取得について説明します。

コンソールアプリケーションのコマンドライン引数については、
main関数のchar型ポインタの配列から取得する必要がありましたが、
ウィンドウアプリケーションの場合はすごいシンプルです。
最初のWinMain関数の、

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)

lpCmdLineの部分がそれを表しています。

もしスペースで区切って引数を指定した場合も、それはスペースを含む一つの文字列として表示されます。
単純にMessageBox関数として表示するようにコーディングしてみてください。
その後実行ファイルに何かファイルをドラッグして実行すると、
そのドラッグしたファイルのフルパスが表示されます。
もちろんコマンドプロンプトから、引数を指定して実行した場合も、
その文字列が表示されることになります。
一つの文字列なので内部で自分で、パラメータを分割する必要があるんですね。

もう一つコマンドライン引数を取得する方法として、GetCommandLine関数を使います。
引数はありません。
実行すると、自分の実行ファイルのフルパスを含んで、コマンドライン引数の
文字列のポインタを返します。

MessageBox(NULL,GetCommandLine(),NULL,MB_OK);

と書いてコンパイルし、実行ファイルにファイルをドラッグして実行してみてください。
今度はこの実行ファイル自身のフルパスとともに、ドラッグしたファイルのフルパスが表示されたと思います。
この関数では実行ファイル自身のフルパスを含むところだけが、
先程の方法と違うんですね。
こちらの方がコンソールアプリケーションのコマンドライン引数の取得に少し似ています。

どちらを使うかは自由です。
実行ファイルのフルパスを必要としなければ、前者の方法の方が簡単で良いと思います。

次回はビープ音の再生について説明します。


>> 【ビープ音の再生】に進む
>> WINAPI入門トップに戻る