Changer la priorité d'un processus

Résolu
Signaler
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Bonjour a tous,

Voila dans mon programme ctrlAltDel j'ai maintenant ajouté les priorité du processus. Mais je veu aller plus loin, je veu que l'on puisse la changer. J'ai donc fait cette fonction :

BOOL ChangePriority(HWND hwProcessList){
     int iSel;
     LV_ITEM lviItem;
     char szName[20+1];
     PROCESSENTRY32 stProcess;
     HANDLE haSnapShot;
     BOOL boContinue;
    
     iSel = ListView_GetNextItem(hwProcessList,-1,LVNI_SELECTED);
    
     lviItem.mask = LVIF_TEXT;
     lviItem.iItem = iSel;
     lviItem.iSubItem = 0;
     lviItem.pszText = szName;
    
     ListView_GetItem(hwProcessList,&lviItem);
    
     haSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    
     stProcess.dwSize = (DWORD) sizeof(PROCESSENTRY32);
    
     boContinue = Process32First(haSnapShot,&stProcess);
    
     do{
        if(strstr(szName,stProcess.szExeFile) == 0){
            CloseHandle(haSnapShot);
            HANDLE haProcess;
           
            haProcess = OpenProcess(PROCESS_SET_INFORMATION,FALSE,stProcess.th32ProcessID);
            if((SetPriorityClass(haProcess,HIGH_PRIORITY_CLASS)) == 0) return FALSE;
           
            CloseHandle(haProcess);
           
            return TRUE;
           
        }
       
        boContinue = Process32Next(haSnapShot,&stProcess);
     }while(boContinue);
    
     return FALSE;
}

Elle ne fait que de changer la priorité du processus en high. Mais la fonction SetPriorityClass() me renvoie tjrs 0 (donc ne fonctionne pas). Quelle est ma faute? faut-il des droits spéciaux pour le faire? si oui il ne sont pas mis dans l'explication de SetPriorityClass. Ils disent juste que le handle du processus doit contenir PROCESS_SET_INFORMATION. Ce que je fait.

Merci d'avance.

4 réponses

Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Aaaaaaaaaaaaaaar que je suis c**, strstr renvoie pas 0 si il trouve la chaine mais 1 , l'habitude d'utiliser strcmp.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Pas parce qu'un truc rate qu'il faut laisser les handle ouverts, la mémoire n'est pas infinie.
Vérifie aussi le retour d'OpenProcess.

ciao...
BruNews, MVP VC++
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Effectivement openprocess renvoie NULL, mais je ne voi vraiment pas d'ou vient la faute. Pour les handle, le code n'est pas vraiment fini, cela est le squelette, mais cela ne sert a rien de le paufiner si il ne va pas mdr.
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
j'ai trouvé, cela vient du fait qu'il n'y a aucun ID dans stProcess.th32ProcessID . Mais je ne voi pas pourquoi. je tien au courant lol