注意 CreateToolhelp32Snapshot 函数中的第一个参数, 在模拟器中可以只写TH32CS_SNAPPROCESS ,但是在真机中必须写成 TH32CS_SNAPPROCESS | TH32CS_SNAPNOHEAPS 。
#include "tlhelp32.h"
而且要把 toolhelp.lib 添加到 工程中的附加项里面。
//-------------- 以下的语句将进程ID映射为进程名 ----------------//
CString strProcess=_T("");
//HANDLE hProcess;
HANDLE hProcessSnap=NULL;
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS | TH32CS_SNAPNOHEAPS,0);//TH32CS_SNAPALL,0);//0表示当前进程
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
OnCancel();
//AfxMessageBox(_T("CreateToolhelp32Snapshot Failed!!!"));
return FALSE ;
}
CString cspid;
PROCESSENTRY32 pe32={0};
pe32.dwSize=sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap,&pe32))
{
do
{
CString tempFileName= pe32.szExeFile ;
strProcess += tempFileName ;
strProcess += _T("\r\n");
}
while(Process32Next(hProcessSnap,&pe32));
}
CloseToolhelp32Snapshot(hProcessSnap);
SetDlgItemText(IDC_EDIT_PROCESS,strProcess);