SetThreadAffinityMask(GetCurrentThread, 1) - для текущего потока
Для другого потока:
| Код | const THREAD_TERMINATE = ($0001); {$EXTERNALSYM THREAD_TERMINATE} THREAD_SUSPEND_RESUME = ($0002); {$EXTERNALSYM THREAD_SUSPEND_RESUME} THREAD_GET_CONTEXT = ($0008); {$EXTERNALSYM THREAD_GET_CONTEXT} THREAD_SET_CONTEXT = ($0010); {$EXTERNALSYM THREAD_SET_CONTEXT} THREAD_SET_INFORMATION = ($0020); {$EXTERNALSYM THREAD_SET_INFORMATION} THREAD_QUERY_INFORMATION = ($0040); {$EXTERNALSYM THREAD_QUERY_INFORMATION} THREAD_SET_THREAD_TOKEN = ($0080); {$EXTERNALSYM THREAD_SET_THREAD_TOKEN} THREAD_IMPERSONATE = ($0100); {$EXTERNALSYM THREAD_IMPERSONATE} THREAD_DIRECT_IMPERSONATION = ($0200); {$EXTERNALSYM THREAD_DIRECT_IMPERSONATION}
THREAD_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $3FF); {$EXTERNALSYM THREAD_ALL_ACCESS}
SYNCHRONIZE = ($00100000); {$EXTERNALSYM SYNCHRONIZE} var H: THandle; begin H := OpenThread(THREAD_ALL_ACCESS,False,ThreadId); if SetThreadAffinityMask(H,1)=0 then ShowMessage(SysErrorMessage(GetLastError)); if H<>0 then CloseHandle(H);
|
|