Bonjour,

Je cherche à lister les processus(nom/chemin) en cours d’exécution.
J'ai un code qui semble marcher mais seulement dans le main. Lorsque que je place le code dans une fonction il n'est plus exécuter et seul le code dans le main l'est.
L'erreur survient seulement en release et non en debug (sous code::blocks).

Code : 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>
#include <psapi.h>
 
void processLst()       ///Liste les processus(nom & chemin) en cours d'execution
{
    HANDLE hss;
    PROCESSENTRY32 pe;
 
    hss = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 
    if (Process32First(hss, &pe))
    {
        do
        {
            HANDLE hp = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pe.th32ProcessID);
            WCHAR s[255] = {0};
 
            printf("%s :\n", pe.szExeFile);
 
            GetModuleFileNameEx(hp, NULL, s, 255);
            printf("\t%s\n", s);
 
            CloseHandle(hp);
        }
        while (Process32Next(hss, &pe));
    }
 
    CloseHandle(hss);
}
 
int main(int argc, char** argv)
{
    //équivalent de la fonction processLst
    HANDLE hss;
    PROCESSENTRY32 pe;
 
    hss = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 
    if (Process32First(hss, &pe))
    {
        do
        {
            HANDLE hp = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pe.th32ProcessID);
            WCHAR s[255] = {0};
 
            printf("%s :\n", pe.szExeFile);
 
            GetModuleFileNameEx(hp, NULL, s, 255);
            printf("\t%s\n", s);
 
            CloseHandle(hp);
        }
        while (Process32Next(hss, &pe));
    }
 
    CloseHandle(hss);
    //fin processLst
 
    printf("\n\nSeparateur\n\n");
 
    processLst();   //pas executer
 
 
    system("pause");
    return 0;
}
merci d'avance