• ベストアンサー

絶対パスがx,y,zのファイル,ホルダを

c:\p.exeにドラッグしてc:\p.exeを実行したとき [GetCommandLine()] はどのようになるのでしょうか? 98se 95 Borland C++5.5 Comlierでは ["c:\p.exe" x y z] になるのですが Windows2000 + SP3, VC++ 6.0では ["c:\p.exe" "x" "y" "z"] となるそうです Me,Xp,NT,2000でBorland c++5.5 Compiler ではどうのようになるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • gimmick
  • ベストアンサー率49% (134/270)
回答No.1

前回の質問の続きとして回答します。 (http://www.okweb.ne.jp/kotaeru.php3?q=543088) 次のようなプログラムにすれば、OSのバージョンに依存しないかと思いますがどうでしょうか? --------------------------------------------------------- #include <windows.h> #include <string> int WINAPI WinMain(HINSTANCE , HINSTANCE, LPSTR, int) {      char param[256], buf[256];   char *p, *b;      /*パラメータ取得とバッファ初期化*/   strncpy(param, GetCommandLine() , sizeof(param));   param[255] = '\0';   memset(buf, 0, sizeof(buf));      /*引用符の除去*/   p = param, b = buf;   while(*p != '\0') {     if (*p != '\"') {       *b++ = *p++;     }     else {       p++;     }   }      /*ファイル名の区切りを\nにする*/   for(b = buf + 2; *b != '\0'; b++) {     if ((*b == ':') && (*(b - 2) == ' ')) {       *(b-2) = '\n';     }   }      /*結果確認*/   MessageBox(NULL, buf, "File Name", MB_OK);   return 0; }

nubou
質問者

お礼

結局”で囲んでいるものといないものに対応できるので”を無視できる方法でやってみようと思います わざわざアプリまで組んでいただいてありがとうございました

nubou
質問者

補足

ありがとうございます 256だとこれがボトルネックになるので512として考えます ”を無視して格納するということですね ということは”で囲まれているかいないかの仕様しか今のところ無いということですね

関連するQ&A