在C ++中,Argument Passed不完整

时间:2014-07-03 11:38:27

标签: c++ wpf vb.net window

我只是想使用CreateProcess将参数传递给另一个应用程序。 当我在目的地获得参数时,它不完整只传递一部分。我得到的输出是"1\\Documentation\\U3DElements.pdf"

这是传递参数的代码。(这是一个C ++代码)

STARTUPINFO si;     
PROCESS_INFORMATION pi;

// set the size of the structures
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
LPTSTR cmdArgs = "C:\\Users\\vignesh.d\\Downloads\\sdk110_v1_win\\Adobe\\Acrobat XI SDK\\Version1\\Documentation\\U3DElements.pdf";
// start the program up
if (CreateProcess(
        TEXT("C:\\Users\\vignesh.d\\Documents\\Visual Studio  2012\\Projects\\AdobePlugin\\AdobePlugin\\bin\\Debug\\AdobePlugin.exe"),
        cmdArgs,NULL,NULL,FALSE,
        CREATE_NEW_CONSOLE,
        NULL,
        NULL,
        &si,
        &pi))
{
    WaitForSingleObject(pi.hProcess, INFINITE);
}
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );

这是我显示它的代码。(AdobePlugin.exe这是一个VB代码)

Private Sub App_Startup(ByVal sender As Object, ByVal e As StartupEventArgs)
    MsgBox(e.Args(2))
End Sub

我希望MsgBox显示完整代码" C:\ Users \ vignesh.d \ Downloads \ sdk110_v1_win \ Adob​​e \ Acrobat XI SDK \ Version1 \ Documentation \ U3DElements.pdf"

1 个答案:

答案 0 :(得分:3)

参数/参数用空格分隔。

MsgBox(e.Args(1))

会给你上半场的论点。

如果你想把包含空格的东西作为一个参数传递,你需要把它放在引号中,喜欢这个:

LPTSTR cmdArgs = "\"C:\\Users\\vignesh.d\\Downloads\\sdk110_v1_win\\Adobe\\Acrobat XI SDK\\Version1\\Documentation\\U3DElements.pdf\"";

引用参数是否包含空格可能会造成伤害。