将进程亲和性设置为特定进程
Setting process affinity to a specific process
我想将进程关联设置为特定进程。
喜欢:
我有一个名为 "word.exe" 的进程,PID:2045
如何设置进程亲和力?
我在网上搜索了一下,没找到多少。我只找到了 GetCurrentProcess(),但它只将进程关联设置为当前进程。
int main()
{
DWORD processID = GetCurrentProcessId();
HANDLE process = GetCurrentProcess();
DWORD_PTR processAffinityMask = 1;
BOOL success = SetProcessAffinityMask(process, processAffinityMask);
SetPriorityClass(GetCurrentProcess(), THREAD_PRIORITY_TIME_CRITICAL);
cout << success << " " << processID << endl; //returns 1 if everything goes okay
}
编辑
我的意思是:有一个 GetCurrentProcess() 的替代品,它不是将关联设置为当前进程,而是将关联设置为我想要的特定进程?
can I change the GetCurrentProcces() with another function?
Yes.
#include <iostream>
#include <windows.h>
#include <tlhelp32.h>
HANDLE GetProcessHandleByName(const std::wstring& processName)
{
HANDLE hProcess = NULL;
PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);
HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (processesSnapshot == INVALID_HANDLE_VALUE) {
return 0;
}
Process32First(processesSnapshot, &processInfo);
if (!processName.compare(processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processInfo.th32ProcessID);
return hProcess;
}
while (Process32Next(processesSnapshot, &processInfo))
{
if (!processName.compare(processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processInfo.th32ProcessID);
return hProcess;
}
}
CloseHandle(processesSnapshot);
return hProcess;
}
用法:
HANDLE hProcess = GetProcessHandleByName(L"word.exe");
顺便说一句:
在 SetPriorityClass
, There is no parameter THREAD_PRIORITY_TIME_CRITICAL
in dwPriorityClass
, Maybe you want to use SetThreadPriority
.
我想将进程关联设置为特定进程。
喜欢: 我有一个名为 "word.exe" 的进程,PID:2045 如何设置进程亲和力?
我在网上搜索了一下,没找到多少。我只找到了 GetCurrentProcess(),但它只将进程关联设置为当前进程。
int main()
{
DWORD processID = GetCurrentProcessId();
HANDLE process = GetCurrentProcess();
DWORD_PTR processAffinityMask = 1;
BOOL success = SetProcessAffinityMask(process, processAffinityMask);
SetPriorityClass(GetCurrentProcess(), THREAD_PRIORITY_TIME_CRITICAL);
cout << success << " " << processID << endl; //returns 1 if everything goes okay
}
编辑 我的意思是:有一个 GetCurrentProcess() 的替代品,它不是将关联设置为当前进程,而是将关联设置为我想要的特定进程?
can I change the GetCurrentProcces() with another function? Yes.
#include <iostream>
#include <windows.h>
#include <tlhelp32.h>
HANDLE GetProcessHandleByName(const std::wstring& processName)
{
HANDLE hProcess = NULL;
PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);
HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (processesSnapshot == INVALID_HANDLE_VALUE) {
return 0;
}
Process32First(processesSnapshot, &processInfo);
if (!processName.compare(processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processInfo.th32ProcessID);
return hProcess;
}
while (Process32Next(processesSnapshot, &processInfo))
{
if (!processName.compare(processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processInfo.th32ProcessID);
return hProcess;
}
}
CloseHandle(processesSnapshot);
return hProcess;
}
用法:
HANDLE hProcess = GetProcessHandleByName(L"word.exe");
顺便说一句:
在 SetPriorityClass
, There is no parameter THREAD_PRIORITY_TIME_CRITICAL
in dwPriorityClass
, Maybe you want to use SetThreadPriority
.