我有一个C函数阻止exe应用程序被执行,我喜欢用窗口形式.net2做同样的事情。怎么样?
int ExecuteBlocking(const char *appName, const char *cmdLine)
{
char sz[260];
STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
BOOL b = CreateProcess(0, sz, 0, 0, 0, CREATE_DEFAULT_ERROR_MODE, 0, 0, &siStartupInfo, &piProcessInfo);
if (b == 0)
return -1;
WaitForSingleObject(piProcessInfo.hProcess, -1);
CloseHandle(piProcessInfo.hProcess);
CloseHandle(piProcessInfo.hThread);
return 0;
}
答案 0 :(得分:1)
该C代码不阻止程序执行。它只是等待它完成执行,该功能将不会返回,直到发生这种情况。你可以在.NET中使用Process.WaitForExit()得到完全相同的东西。