MSVCRT GetCommandLineW 新しいページはコチラ
提供: yonewiki
(ページの作成:「MSVC Runtimeリファレンスに戻る =='''概要'''== Windowsアプリケーションでも、コンソールアプリ...」) |
(→概要) |
||
11行: | 11行: | ||
例 | 例 | ||
− | <span style="background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">LPWSTR* </span>argvUTF16 = <span style="color:blue;"> | + | <span style="background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">LPWSTR* </span>argvUTF16 = CommandLineToArgvW(<span style="color:blue;">GetCommandLineW</span>(), &argcUTF16);</span> |
− | + | 上記のようにすると、引数をうまく処理できます。[[MSVCRT CommandLineToArgvW]]の1番目の引数にはコマンドライン文字列を取得してその先頭アドレスが返されるような関数を指定しなければなりません。そのような関数としてGetCommandLineW()を指定する事にができます。processenv.hを読み込んでいる必要が有ります。2番目の引数に指定したint型のアドレスで起動引数の数を、戻り値として起動引数の文字列配列のポインタを取得できます。MSVCのCppプログラム内の文字は基本的にUTF-16の形式で扱われますので、CommandLineToArgvWはUTF-16の形式で文字列が取得きます。ここで取得した文字列ポインタでは、まだ文字列を取得できたとは言えない状態です。いくつかある文字列の配列の一番最初のアドレスを取得しただけです。単純にint argcUTF16; として実体化したの変数にアドレス演算子をつけて例のように第2引数にするとよいです。この変数に引数の数が格納されます。\0の配列が最後にあるので、1つめにアプリケーションの起動パスが引数となるならば、\0を含めて2個の引数があるという応答がなされるハズです。 | |