Suffit de regarder MSDN:
#include <windows.h> #include <stdio.h> #include "psapi.h"
void PrintProcessNameAndID( DWORD processID ) { char szProcessName[MAX_PATH] = "unknown"; // Get a handle to the process. HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID ); // Get the process name. if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if(EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded)) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ); } else return; } else return; // Print the process name and identifier. printf( "%s (Process ID: %u)\n", szProcessName, processID ); CloseHandle( hProcess ); }
void main( ) { // Get the list of process identifiers. DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if(!EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded)) return; // Calculate how many process identifiers were returned. cProcesses = cbNeeded / sizeof(DWORD); // Print the name and process identifier for each process. for ( i = 0; i < cProcesses; i++ ) PrintProcessNameAndID( aProcesses[i] ); }
BruNews, ciao...
------------------------------- Réponse au message : -------------------------------
> Oui j'y avais pensé mais EnumProcesses donne une liste de PIDs. Comment savoir lequel correspond au filename desiré? > > > ------------------------------- > Réponse au message : > ------------------------------- > > > EnumProcesses() sur NT4 ou superieur. > > BruNews, ciao... > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Je voudrais terminer un processus (avec TerminateProcess) dont je ne connais que le nom du fichier executable (mdm.exe par exemple), et le processus n'a pas de fenetre (je ne peux donc pas utiliser GetWindowThreadProcessId pour recuperer le PID) > > > > > > Quelqu'un sait comment recuperer un process handle ou un PID en ne connaissant que le nom du fichier? > > >
|