万卷书   首页 > 电脑书籍 > Win2000/NT >Win 2000下的进程枚举
 
他们的作用分别是:枚举进程,枚举进程模块,获取模块文件名(包含路径)。详细的源代码如下:

// EnumProcess.cpp : Defines the entry point for the console application.
// Code By : tabris17

#include "stdafx.h"
#include "Psapi.h"

#pragma comment (lib,"Psapi.lib")

void PrintFileName(DWORD processID)
{
char fn[MAX_PATH];
HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,processID);
if (hProcess)
{
HMODULE hMod[1024];
DWORD cbNeeded,size;
unsigned int i;
if (EnumProcessModules(hProcess,hMod,sizeof(hMod),&cbNeeded))
{
size=cbNeeded/sizeof(HMODULE);
GetModuleFileNameEx(hProcess,hMod[0],fn,sizeof(fn));
printf("\n(%u)\t%s\n",processID,fn);
for(i=1;i<size;i++)
{
GetModuleFileNameEx(hProcess,hMod[i],fn,sizeof(fn));
printf("\t%s\n",fn);
}
}
}
CloseHandle(hProcess);
}

int plist()
{
DWORD Processesid[1024], cbNeeded,size;
unsigned int i;
if (!EnumProcesses(Processesid,sizeof(Processesid),&cbNeeded))
return 0;

size=cbNeeded/sizeof(DWORD);

for (i=0;i<size;i++)
PrintFileName(Processesid[i]);
return 0;
}

int main(int argc, char* argv[])
{
plist();
return 0;
}

上一页