簡體   English   中英

如何讓進程設置它的親和力?

[英]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傳遞給SetProcessAffinityMaskSetPriorityClass

我相信你需要運行提升(即作為管理員)才能工作 - 並測試OpenProcess成功並報告調用GetLastError的結果如果沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM