WinXP sp2 VC++6.0
MFC プログラムで第二引数を取得したいのですが、
上手くいきません。
引数はvisualstadioプログラム引数で設定しています。
// コマンド引数を取得
if(m_lpCmdLine[0] == NULL){ // 引数なし
} else {// 引数あり
CString Str = m_lpCmdLine[1];
}
m_lpCmdLineはargvみたいに引数毎に分割されてないので
CCommandLineInfo等使って解析しなければなりません。
VCのプログラム引数を
Debug\XXXXX.exe C:\Documents and Settings\test.txt
と設定した場合、
C:\Documents and Settings\test.txtを取得したいのですが、
CCommandLineInfoを利用して解析できるのでしょうか_?
教えていただけませんか?
普通に
CString Str = m_lpCmdLine ;
で代入できませんか?
::PathUnquoteSpaces(m_lpCmdLine) ;
なんてしておいた方が良いかもしれません。
ゆう様
CString Str = m_lpCmdLine ;
でとるとプログラム引数の全て
Debug\XXXXX.exe C:\Documents and Settings\test.txt
を取得していまいます。
Strでとった全ての引数は、自分で分別しなければいけないのでしょうか?
Debug\XXXXX.exe
C:\Documents and Settings\test.txt
上記の二つを別に取得したいです。
私の環境(win2000 VC++6.0)では
C:\Documents and Settings\test.txtだけが取得できており、
Debug\XXXXX.exe はついてきません。
環境に依存するんですかね。
win98では"はついてきませんでしたから。
oriさんがいうようにするなら、こんな感じでしょうか。
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if(cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew)
{
Str = cmdInfo.m_strFileName ;
}
>CCommandLineInfo cmdInfo;
> ParseCommandLine(cmdInfo);
> if(cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew)
> {
> Str = cmdInfo.m_strFileName ;
> }
まちがいです。
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if(cmdInfo.m_nShellCommand == CCommandLineInfo::FileOpen)
{
Str = cmdInfo.m_strFileName ;
}
単に
>Debug\XXXXX.exe C:\Documents and Settings\test.txt
の指定の仕方が悪いのでは?
Debug\XXXXX.exe C:\Documents and Settings\test.txt
にしてあげないといけないとか。