在win7 64位系统中,windows的一些函数
OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ , false, dwProcessIdentify[nIndex] );和
EnumProcessModules( hProcess, &hMod, sizeof(HMODULE),&dwModuleBytes );列举不到所有的进程ID,但可以使用下面例子中的函数能列举出来。
//#include <Psapi.h>
#include <iostream>
#include <tchar.h>
#include <map>
#include <string>
#include <TlHelp32.h>
int findProcess()
{
PROCESSENTRY32 pe32;
int i = 0;
//在使用这个结构前,先设置它的大小
pe32.dwSize = sizeof(pe32);
//给系统内所有的进程拍个快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot 调用失败.\n");
return -1;
}
//遍历进程快照,轮流显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap,&pe32);
while (bMore)
{
printf("进程名称:%s\n",pe32.szExeFile);
printf("进程ID:%u\n\n",pe32.th32ProcessID);
bMore = ::Process32Next(hProcessSnap,&pe32);
i++;
}
cout<<"total process = "<<i<<endl;
//不要忘记清除掉snapshot对象
::CloseHandle(hProcessSnap);
return 0;
}
//#include <Psapi.h>
#include <iostream>
#include <tchar.h>
#include <map>
#include <string>
#include <TlHelp32.h>
int findProcess()
{
PROCESSENTRY32 pe32;
int i = 0;
//在使用这个结构前,先设置它的大小
pe32.dwSize = sizeof(pe32);
//给系统内所有的进程拍个快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot 调用失败.\n");
return -1;
}
//遍历进程快照,轮流显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap,&pe32);
while (bMore)
{
printf("进程名称:%s\n",pe32.szExeFile);
printf("进程ID:%u\n\n",pe32.th32ProcessID);
bMore = ::Process32Next(hProcessSnap,&pe32);
i++;
}
cout<<"total process = "<<i<<endl;
//不要忘记清除掉snapshot对象
::CloseHandle(hProcessSnap);
return 0;
}