我正在尝试使用createprocess函数从我的代码启动一个进程。命令行是好的,另一个exe,我可以在没有Visual Studio的问题的情况下启动它。
当我尝试使用createprocess从其他进程启动它时,它给了我 - 运行时错误此应用程序已请求运行时以不寻常的方式终止它。
可能是什么问题?我怎么能删除这个问题?
STARTUPINFO si;
PROCESS_INFORMATION pi;
bool bResult;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
//Cast System::String* __gc to char*
char* chAppName = (char*)(void*)Marshal::StringToHGlobalAnsi(AppName);
char* chCmdLine = (char*)(void*)Marshal::StringToHGlobalAnsi(CmdLine);
//Start the child process.
bResult = CreateProcess( chAppName, // No module name (use command line)
chCmdLine, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi); // Pointer to PROCESS_INFORMATION structure
答案 0 :(得分:0)
首先尝试取消StringToHGlobalAnsi
来电并硬编码。如果这样可以解决问题,我们就可以对StringToHGlobalAnsi
次呼叫进行排序。