コマンドライン引数


起動時の引数

C言語のコンソールプログラムでは、main()関数が引数を受け取りました
main()関数は、引数 argv[] を第二引数に受け取ります

では、WinMain()関数はというと第三引数で引数を受け取っていました
コマンドラインからの立ち上げや、ファイルのD&Dでの立ち上げに
アプリケーションが対応することができます

WinMain() の第三引数は、配列ではありません
トークンの分解はしていなく、スペースも含めた一つの文字列として格納しています
#include<windows.h>

int WINAPI WinMain(
		HINSTANCE hInstance ,
		HINSTANCE hPrevInstance ,
		PSTR lpCmdLine ,
		int nCmdShow ) {
	MessageBox(NULL , lpCmdLine , TEXT("Kitty") , MB_ICONINFORMATION);
	return 0;
}
コマンドラインからの引数を、メッセージボックスで表示しています
実行ファイルにデータファイルなどをD&Dしてみてください
ファイル名がフルパスでメッセージボックスに表示されます


関数から得る

WinMain() 関数からコマンドライン引数へアクセスすることができますが
専用の GetCommandLine() 関数から得ることも可能です

なにより、WinMain の第三引数は、プログラム本体の引数を得ませんでした
しかし、GetCommandLine() からは実行ファイルの名前を得ることができます

LPTSTR GetCommandLine(VOID)

LPTSTR は、TCHARのポインタ型です
この関数は、起動時のコマンドライン引数を返します
そのため、国際向けのソースではこちらのほうが好ましいですね
#include<windows.h>

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
		 PSTR pCmdLine , int nCmdShow ) {
	MessageBox(NULL , GetCommandLine() ,
			TEXT("Kitty") , MB_ICONINFORMATION);
	return 0;
}
このプログラムでは、プログラム本体のフルパスも表示します


LPTSTR GetCommandLine(VOID)

現在のプロセスのコマンドライン文字列を返します

戻り値 - コマンドライン文字列へのポインタを返します



前のページへ戻る次のページへ