Код: Выделить всё
#include
#include
#include
#include
#include
#include
void suspendThreadsExceptIdealProcessor(const std::wstring& processName, DWORD idealProcessor) {
DWORD processId = GetProcessIdByName(processName);
if (processId != 0) {
HANDLE hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if (hThreadSnap != INVALID_HANDLE_VALUE) {
THREADENTRY32 te32;
te32.dwSize = sizeof(THREADENTRY32);
if (Thread32First(hThreadSnap, &te32)) {
do {
if (te32.th32OwnerProcessID == processId) {
HANDLE hThread = OpenThread(THREAD_SUSPEND_RESUME | THREAD_QUERY_INFORMATION, FALSE, te32.th32ThreadID);
if (hThread) {
PROCESSOR_NUMBER procNumber;
BOOL success = GetThreadIdealProcessorEx(hThread, &procNumber);
if (success) {
if (procNumber.Number != idealProcessor) {
SuspendThread(hThread);
std::wcout
Подробнее здесь: [url]https://stackoverflow.com/questions/78715335/openthread-function-cannot-detect-thread-id-in-release-mode-but-works-in-debug-m[/url]