原码如下:void CProcListDlg::OnButton1()
{
// TODO: Add your control notification handler code here
HINSTANCE hstn=NULL;
if(hstn!=NULL)
{
return ;
}
hstn=LoadLibrary("psapi.dll");
if (hstn==NULL) MessageBox("NULL",NULL,MB_OK);
typedef BOOL (WINAPI *EnumProcesses1)(DWORD*,DWORD,DWORD*);
typedef BOOL (WINAPI *EnumProcessModules1)(HANDLE,HMODULE*,DWORD,LPDWORD);
typedef DWORD (WINAPI *GetModuleBaseName1)(HANDLE,HMODULE,LPTSTR,DWORD); EnumProcesses1 EnumProcesses;
EnumProcessModules1 EnumProcessModules;
GetModuleBaseName1 GetModuleBaseName; EnumProcesses=(EnumProcesses1)GetProcAddress(hstn,"EnumProcesses");
EnumProcessModules=(EnumProcessModules1)GetProcAddress(hstn,"EnumProcessModules");
GetModuleBaseName=(GetModuleBaseName1)GetProcAddress(hstn,"GetModuleBaseName");
DWORD proclist[1024],cdNeeded,procnum;
HANDLE hProcess;
HMODULE hMod;
char procname[MAX_PATH]="UNKOWN";
if (!EnumProcesses(proclist, sizeof(proclist), &cdNeeded)) return ;
procnum = cdNeeded / sizeof(DWORD);
m_list.ResetContent();
int a=0;
for(unsigned int i=0;i<procnum;i++)
{
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,false,proclist[i]);
if (hProcess)
{
if (EnumProcessModules(hProcess,&hMod,sizeof(hMod),&cdNeeded))
{
a++;
GetModuleBaseName(hProcess,hMod,procname,sizeof(procname));
m_list.AddString(procname);
}
}
}
itoa(a,procname,10);
MessageBox(procname,NULL,MB_OK);
}
{
// TODO: Add your control notification handler code here
HINSTANCE hstn=NULL;
if(hstn!=NULL)
{
return ;
}
hstn=LoadLibrary("psapi.dll");
if (hstn==NULL) MessageBox("NULL",NULL,MB_OK);
typedef BOOL (WINAPI *EnumProcesses1)(DWORD*,DWORD,DWORD*);
typedef BOOL (WINAPI *EnumProcessModules1)(HANDLE,HMODULE*,DWORD,LPDWORD);
typedef DWORD (WINAPI *GetModuleBaseName1)(HANDLE,HMODULE,LPTSTR,DWORD); EnumProcesses1 EnumProcesses;
EnumProcessModules1 EnumProcessModules;
GetModuleBaseName1 GetModuleBaseName; EnumProcesses=(EnumProcesses1)GetProcAddress(hstn,"EnumProcesses");
EnumProcessModules=(EnumProcessModules1)GetProcAddress(hstn,"EnumProcessModules");
GetModuleBaseName=(GetModuleBaseName1)GetProcAddress(hstn,"GetModuleBaseName");
DWORD proclist[1024],cdNeeded,procnum;
HANDLE hProcess;
HMODULE hMod;
char procname[MAX_PATH]="UNKOWN";
if (!EnumProcesses(proclist, sizeof(proclist), &cdNeeded)) return ;
procnum = cdNeeded / sizeof(DWORD);
m_list.ResetContent();
int a=0;
for(unsigned int i=0;i<procnum;i++)
{
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,false,proclist[i]);
if (hProcess)
{
if (EnumProcessModules(hProcess,&hMod,sizeof(hMod),&cdNeeded))
{
a++;
GetModuleBaseName(hProcess,hMod,procname,sizeof(procname));
m_list.AddString(procname);
}
}
}
itoa(a,procname,10);
MessageBox(procname,NULL,MB_OK);
}
GetModuleBaseName=(GetModuleBaseName1)GetProcAddress(hstn,"GetModuleBaseNameA");