GetCommandLine

GetCommandLineは、コマンドライン引数文字列を取得するWindowsAPI・・・。

GetCommandLine 関数

_tWinMain関数のlpCmdLineにもコマンドライン引数文字列は格納されているが、実行ファイル名が含まれていない・・・。
実行ファイル名を含めたコマンドライン引数文字列はGetCommandLineで取得する・・・。

TCHAR型のグローバル文字配列を2つ用意しておく・・・。
tszArgCmdLineがlpCmdLineで取得したほうの文字列・・・。
tszApiCmdLineがGetCommandLineで取得したほうの文字列・・・。

_tWinMainの最初の変数宣言の後すぐに、_tcscpyでlpCmdLineをtszArgCmdLineに、GetCommandLine()の戻り値をtszApiCmdLineにコピー・・・。

あとは、WM_PAINT時にTextOutでそれぞれ描画・・・。

f:id:BG1:20160908151221p:plain

プロパティから、

f:id:BG1:20160908151304p:plain

[デバッグ]-[コマンド引数]で、適当に引数を付けて実行するようにしてみる・・・。

f:id:BG1:20160908151345p:plain

lpCmdLineは実行ファイル名が付かないのに対し、GetCommandLine()は実行ファイル名が付いている・・・。
(しかもダブルクォート("")付きでフルパス・・・。)

コマンドプロンプトでもやってみる・・・。

exeのあるフォルダまで移動して、

f:id:BG1:20160908151627p:plain

こんな感じ・・・。
すると、

f:id:BG1:20160908151704p:plain

こちらでもGetCommandLine()だと実行ファイル名が付いている・・・。
(ただし、こちらではダブルクォート("")はなく、フルパスでもない実行ファイル名のみ・・・。実行ファイル名だけを指定して実行してるからねえ・・・。)

Sample/winapi/GetCommandLine/GetCommandLine/src/GetCommandLine at master · bg1bgst333/Sample · GitHub