Liste des processus WIN32/PSAPI
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). :weird:
Code:
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