Как заставить процесс установить его сходство? - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь настроить процесс, чтобы установить его соответствие, используя программу ниже.Но я хочу установить сходство хрома или любого другого процесса.Как это сделать?

#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");
}

1 Ответ

0 голосов
/ 30 сентября 2018

Чтобы получить идентификатор процесса с произвольным именем, вы можете сделать:

#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, если нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...