我正在编写一个对数据进行排序的程序,我需要将进程设置为优先级31,我认为这是Windows中最高的进程优先级。我做了一些研究,但不知道如何在C++中做到这一点。
发布于 2018-01-11 22:05:48
以下函数将完成此工作:
void SetProcessPriority(LPWSTR ProcessName, int Priority)
{
PROCESSENTRY32 proc32;
HANDLE hSnap;
if (hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0));
if (hSnap == INVALID_HANDLE_VALUE)
{
}
else
{
proc32.dwSize = sizeof(PROCESSENTRY32);
while ((Process32Next(hSnap, &proc32)) == TRUE)
{
if (_wcsicmp(proc32.szExeFile, ProcessName) == 0)
{
HANDLE h = OpenProcess(PROCESS_SET_INFORMATION, TRUE, proc32.th32ProcessID);
SetPriorityClass(h, Priority);
CloseHandle(h);
}
}
CloseHandle(hSnap);
}
}
例如,要将当前进程的优先级设置为低于正常,请使用:
SetProcessPriority(GetCurrentProcess(), BELOW_NORMAL_PRIORITY_CLASS)
发布于 2011-03-08 09:59:33
在SetPriorityClass之后(或之前),您必须设置单个线程的优先级,以获得最大可能的优先级。此外,实时优先级类还需要另一个安全令牌,因此请确保获取它(如果可以访问)。SetThreadPriority是SetPriorityClass之后的第二个接口。
https://stackoverflow.com/questions/5216347
复制相似问题