コマンドライン引数
起動時の引数
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)
現在のプロセスのコマンドライン文字列を返します
戻り値 - コマンドライン文字列へのポインタを返します