お世話になります。
現在、VC++2005にてダイアログベースのアプリを作成しています。
Aプロセス(EXE)からBプロセス(EXE)を起動すために
CreateProcessを使用しています。
この時、プロセスBに引数を渡すためにコマンドラインにより
行っています。
CString szCmdline = _T( "B.exe /K " );
CString strMsg;
CString strCmdLine;
strCmdLine = szCmdline + _T("C:\\test\\data");
LPWSTR lpCommandLine = new TCHAR[strCmdLine.GetLength()+1];
_tcscpy_s( lpCommandLine, strCmdLine.GetLength()+1, strCmdLine );
memset( &si, 0, sizeof(STARTUPINFO) );
memset( &pi, 0, sizeof(PROCESS_INFORMATION) );
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWDEFAULT;
if ( CreateProcess(
NULL,
lpCommandLine,
NULL, NULL, FALSE,
NULL,
NULL, NULL, &si, &pi ) ) {
delete lpCommandLine;
}
引数1つの場合は、Bプロセスで"C:\\test\\data"を取得できます。
しかし、以下のように空白で区切って引数を渡すと"C:\\test\\data"と"Mode"を取得できません。
strCmdLine = szCmdline + _T("C:\\test\\param") + _T(" ")
+ _T("Mode");
コマンドラインによる引数渡しを教えて頂けないでしょうか。
受け取り側がどうなっているのですか?
それ次第だと思うのですけど。
お勧めしませんが
BOOL CXxxxApp::InitInstance()で
for(i = 0; i < __argc; i++){
AfxMessageBox( __argv[i] );
}
という手段があります。
お世話になります。
教えて頂いた方法で行ってみます。
有難う御座いました。
ツイート | ![]() |