プロセス起動について

解決


やっこい  2011-02-16 02:22:01  No: 72342

お世話になります。
現在、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");

コマンドラインによる引数渡しを教えて頂けないでしょうか。


pp  2011-02-17 07:13:29  No: 72343

受け取り側がどうなっているのですか?
それ次第だと思うのですけど。

お勧めしませんが

BOOL CXxxxApp::InitInstance()で

for(i = 0; i < __argc; i++){
    AfxMessageBox( __argv[i] );
}
という手段があります。


やっこい  2011-02-18 22:59:38  No: 72344

お世話になります。

教えて頂いた方法で行ってみます。
有難う御座いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加