BOOL EnumProcessModules(HMODULE HandleModule, LPSTR NomModule, DWORD TailleNomModule);
#include <windows.h>
#include <winbase.h>
#include <psapi.h>
DWORD TableProcessus[256];
DWORD TailleTableDemandee;
short NbProcessus;
HANDLE HandleProcessus;
HMODULE HandleModule;
DWORD TailleTableDemandee2;
char NomProgramme[256];
...
if (!EnumProcesses(TableProcessus, 256, &TailleTableDemandee))
{
...
}
...
for (NbProcessus=0; NbProcessus<TailleDemandee/sizeof(DWORD); NbProcessus++)
{
HandleProcessus=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, FALSE, TableProcessus[NbProcessus]);
if (!HandleProcessus)
{
...
}
...
if (!EnumProcessModules(HandleProcessus, &HandleModule, sizeof(HandleModule), &TailleTableDemandee2))
{
...
}
...
if (!GetModuleBaseName(HandleProcessus, HandleModule, NomProgramme, 256))
{
...
}
...
CloseHandle(HandleProcessus);
...
}
...
Le premier module est l'exécutable du programme.
Sur Windows 98 et Windows Millenium, cette fonction est inopérante. Il faut employe CreateToolhelp32Snapshot.