Hello World / plɹoM ollǝH

Programmers Live in Vain

WIN32APIでコマンドライン引数を取得する

ブログを見ないで公式ドキュメントを読め docs.microsoft.com

  • GetCommandLine()
  • CommandLineToArgv()

を使ってリストで取得できる(要メモリ解放)

#include <windows.h>
#include <stdio.h>
#include <shellapi.h>

int __cdecl main()
{
   LPWSTR *szArglist;
   int nArgs;
   int i;

   szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
   if( NULL == szArglist )
   {
      wprintf(L"CommandLineToArgvW failed\n");
      return 0;
   }
   else for( i=0; i<nArgs; i++) printf("%d: %ws\n", i, szArglist[i]);

   // Free memory allocated for CommandLineToArgvW arguments.

   LocalFree(szArglist);

   return(1);
}

プログラム中のどこからでも呼べるのが時と場合によって便利