我只是想使用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:Usersvignesh"。
参数和参数之间用空格分隔。
MsgBox(e.Args(1))
给你论据的前半部分。
如果你想传递一个包含空格的参数,你需要把它放在引号里,像这样:
LPTSTR cmdArgs = ""C:\Users\vignesh.d\Downloads\sdk110_v1_win\Adobe\Acrobat XI SDK\Version1\Documentation\U3DElements.pdf"";
无论参数是否包含空格,都可以给它们加引号。