Bonjour,
Je m'intéresse depuis peu à la programmation Windows en C, à l'aide du SDK et de VC 9.0.
J'ai repris un exemple de code du SDK pour et légèrement modifié pour :
- passer en paramètre du programme un PID
- récupérer dans un tableau la liste de tous les PID
- si le PID existe et est égal à celui passé en paramètre, alors l'afficher à l'écran
Le programme compile sans erreur, mais en l'exécutant, il n'affiche rien à l'écran (alors que le processus dont je passe le PID en paramètre existe bien).
Si je retire le test conditionnel if, il m'affiche bien tous les PID de tous les processus.
Je ne comprends pas mon erreur dans le if. Quelqu'un peut m'expliquer ?
Merci pour votre aide.
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #include <windows.h> #include <stdio.h> #include <tchar.h> #include <psapi.h> int main(int argc, int *argv[]) { /* liste des pid */ DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return 1; /* nombre de process retournés */ cProcesses = cbNeeded / sizeof(DWORD); /* affiche le PID passé en paramètre */ for ( i = 0; i < cProcesses; i++ ) { /* c'est avec ce if que j'ai un problème */ if(aProcesses[i] == argv[1]) { printf("PID : %d\n", aProcesses[i]); } } return 0; }
Partager