Comment définir la priorité du processus en C ++

Je travaille sur un programme pour sortinger les données et je dois définir le processus à la priorité 31, ce qui, à mon avis, est la priorité de processus la plus élevée dans Windows. J’ai fait des recherches, mais je n’arrive pas à comprendre comment le faire en C ++.

L’appel d’API Windows SetPriorityClass vous permet de modifier la priorité de votre processus. Copiez l’exemple dans la documentation MSDN et utilisez REALTIME_PRIORITY_CLASS pour définir la priorité la plus élevée.

La fonction suivante fera le travail.

void SetProcessProirity(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); } } 

Par exemple, pour définir la priorité d’Excel sur la normale, utilisez:

 SetProcessProirity(L"excel.exe",BELOW_NORMAL_PRIORITY_CLASS) 

Après (ou avant) SetPriorityClass, vous devez définir la priorité du thread individuel pour obtenir le maximum possible. De plus, un autre jeton de sécurité est requirejs pour la classe de priorité en temps réel, alors assurez-vous de le récupérer (s’il est accessible). SetThreadPriority est l’API secondaire après SetPriorityClass.