VOID SuspendProcess(DWORD dwProcessID, BOOL fSuspend)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, dwProcessID);
if (hSnapshot != INVALID_HANDLE_VALUE)
{
THREADENTRY32 te = { sizeof(te)};
BOOL bOk = Thread32First(hSnapshot, &te);
for (; bOk; bOk = Thread32Next(hSnapshot, &te))
{
if (te.th32OwnerProcessID == dwProcessID)
{
HANDLE hThread = OpenThread(THREAD_SUSPEND_RESUME, FALSE,
te.th32ThreadID);
if (hThread != NULL)
{
if (fSuspend)
{
SuspendThread(hThread);
}else{
ResumeThread(hThread);
}
}
CloseHandle(hThread);
}
}
CloseHandle(hSnapshot);
}
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, dwProcessID);
if (hSnapshot != INVALID_HANDLE_VALUE)
{
THREADENTRY32 te = { sizeof(te)};
BOOL bOk = Thread32First(hSnapshot, &te);
for (; bOk; bOk = Thread32Next(hSnapshot, &te))
{
if (te.th32OwnerProcessID == dwProcessID)
{
HANDLE hThread = OpenThread(THREAD_SUSPEND_RESUME, FALSE,
te.th32ThreadID);
if (hThread != NULL)
{
if (fSuspend)
{
SuspendThread(hThread);
}else{
ResumeThread(hThread);
}
}
CloseHandle(hThread);
}
}
CloseHandle(hSnapshot);
}
}
这个函数可以运行,主要是运用了系统快照函数,遍历里面所有的线程,知道找到合理的,然后把某个进程里的所有线程全部设置成SuspendThread().就暂停了进程。哈哈