我有 c# 控制台应用程序(Net framework 4.5,visual studio 2010 express)。我可以使用 cmd 运行这个应用程序,它的工作正常。但是出于一些非常重要的原因,我需要从其他使用 c++ 编写的应用程序运行此应用程序。我曾尝试使用 ShellExecute、CreateProcess、WinExec 运行 c# 应用程序。它总是崩溃,并且不会在我之前使用 cmd 启动它的同一台机器上运行。是否还有任何方法可以启动这个 c# 应用程序。或者我需要用一些特殊的方式编译/组装这个 c# 应用程序吗?更新示例:
方法一
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "C:\\PATH\\To\\THE\\APP.exe";
ShExecInfo.lpParameters = szParameters;
ShExecInfo.lpDirectory = NULL;
ShExecInfoFlash.hInstApp = NULL;
ShellExecuteEx(&ShExecInfoFlash);
WaitForSingleObject(ShExecInfoFlash.hProcess,INFINITE);
方法二
PROCESS_INFORMATION pi;
char bff[512];
memset(&si,0,sizeof(si));
si.cb=sizeof(si);
if(!CreateProcess(NULL,szParameters,NULL,NULL,0,0,NULL,NULL,&si,&pi))
{ return TS_METHOD_ABORTED;}
WaitForSingleObject(pi.hProcess,INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
它总是以同样的方式崩溃。它告诉我发生了意外并建议我向 MS 发送报告。