c++ - C++ 中传递的参数不完整

标签 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\Adobe\Acrobat XI SDK\Version1\Documentation\U3DElements.pdf”

最佳答案

参数/参数以空格字符分隔。

MsgBox(e.Args(1))

会给你论点的前半部分。

如果您想将包含空格的内容作为一个参数传递,则需要将其放在引号中,如下所示:

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

无论参数是否包含空格,引用参数都没有什么坏处。

关于c++ - C++ 中传递的参数不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24552717/

相关文章:

c++ - boost 序列化和 std::shared_ptr

c# - 在 Window 上实现搜索功能的方法

WPF 菜单项边框

c# - 如何将 mp3 文件分割成几个可单独播放的部分?

mysql - mysql select 查询的循环

c++ - 视觉 C++ 开发

c++ - 从存储对象的 vector 访问变量

c++ - 从包含 m 行的文件中取出 n 行,必要时重复该文件(懒惰地)

c# - 在 propertygrid 中将属性更改为组合框

asp.net-mvc - 查找 session 状态的所有使用