C# コンソール アプリケーション (Net Framework 4.5、Visual Studio 2010 Express) があります。cmd を使用してこのアプリを実行でき、正常に動作します。しかし、いくつかの非常に重要な理由により、このアプリを C++ で記述した他のアプリから実行する必要があります。ShellExecute、CreateProcess、WinExec を使用して C# アプリを実行しようとしました。これは常にクラッシュし、cmd を使用して以前に起動したのと同じマシンでは実行されません。このC#アプリを起動する方法はまだありますか? または、この C# アプリを特別な方法でコンパイル/アセンブルする必要がありますか? 更新の例:
方法 1
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);
方法 2
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 に報告するよう提案されました。