Changer la priorité d'un processus

Résolu
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 14 juin 2006 à 16:36
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 14 juin 2006 à 16:59
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

deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 16:59
Aaaaaaaaaaaaaaar que je suis c**, strstr renvoie pas 0 si il trouve la chaine mais 1 , l'habitude d'utiliser strcmp.
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 juin 2006 à 16:39
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++
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 16:47
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.
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 16:56
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
0
Rejoignez-nous