[英]How to get process to set it's affinity?
我正在尝试使用以下程序来设置它的亲和力。 但我想设置 chrome 或任何其他进程的亲和力。 怎么做?
#include <windows.h>
#include <iostream>
using namespace std;
void main(){
HANDLE process = GetCurrentProcess();
DWORD_PTR processAffinityMask = 8;
BOOL success = SetProcessAffinityMask(process, processAffinityMask);
SetPriorityClass(GetCurrentProcess(), THREAD_PRIORITY_TIME_CRITICAL);
cout << success << endl;
system("pause");
}
要获取任意命名的进程的进程 ID,您可以执行以下操作:
#include <Windows.h>
#include <string>
#include <tlhelp32.h>
int getPID(const std::string& process_name)
{
PROCESSENTRY32 entry;
entry.dwSize = sizeof(PROCESSENTRY32);
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (!Process32First(snapshot, &entry)) return 0;
do
{
if (strcmp(entry.szExeFile, process_name.c_str()) == 0)
{
CloseHandle(snapshot);
return entry.th32ProcessID;
}
} while (Process32Next(snapshot, &entry));
CloseHandle(snapshot);
return 0;
}
然后,您可以获得该进程的句柄,如下所示:
HANDLE hProcess = OpenProcess (PROCESS_SET_INFORMATION, FALSE, pid);
最后,您可以以通常的方式将hProcess
传递给SetProcessAffinityMask
和SetPriorityClass
。
我相信你需要运行提升(即作为管理员)才能工作 - 并测试OpenProcess
成功并报告调用GetLastError
的结果如果没有。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.