MSVCRT GetCommandLineW 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(ページの作成:「MSVC Runtimeリファレンスに戻る =='''概要'''==  Windowsアプリケーションでも、コンソールアプリ...」)
 
(概要)
14行: 14行:
  
  
 上記のようにすると、1番目の引数にはコマンドライン文字列を取得してその先頭アドレスが返されるような関数を指定しなければなりません。この命令の前であらかじめそのワイド文字ポインタを持つ変数があれば、変数でもよいです。通常は例のようにGetCommandLineW()を指定する事になります。processenv.hを読み込んでいる必要が有ります。2番目の引数に指定したint型のアドレスで起動引数の数を、戻り値として起動引数の文字列配列のポインタを取得できます。MSVCのCppプログラム内の文字は基本的にUTF-16の形式で扱われますので、CommandLineToArgvWはUTF-16の形式で文字列が取得きます。ここで取得した文字列ポインタでは、まだ文字列を取得できたとは言えない状態です。いくつかある文字列の配列の一番最初のアドレスを取得しただけです。単純にint argcUTF16; として実体化したの変数にアドレス演算子をつけて例のように第2引数にするとよいです。この変数に引数の数が格納されます。\0の配列が最後にあるので、1つめにアプリケーションの起動パスが引数となるならば、\0を含めて2個の引数があるという応答がなされるハズです。
+
 上記のようにすると、引数をうまく処理できます。[[MSVCRT CommandLineToArgvW]]の1番目の引数にはコマンドライン文字列を取得してその先頭アドレスが返されるような関数を指定しなければなりません。そのような関数としてGetCommandLineW()を指定する事にができます。processenv.hを読み込んでいる必要が有ります。2番目の引数に指定したint型のアドレスで起動引数の数を、戻り値として起動引数の文字列配列のポインタを取得できます。MSVCのCppプログラム内の文字は基本的にUTF-16の形式で扱われますので、CommandLineToArgvWはUTF-16の形式で文字列が取得きます。ここで取得した文字列ポインタでは、まだ文字列を取得できたとは言えない状態です。いくつかある文字列の配列の一番最初のアドレスを取得しただけです。単純にint argcUTF16; として実体化したの変数にアドレス演算子をつけて例のように第2引数にするとよいです。この変数に引数の数が格納されます。\0の配列が最後にあるので、1つめにアプリケーションの起動パスが引数となるならば、\0を含めて2個の引数があるという応答がなされるハズです。
  
  

2021年2月12日 (金) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス