// Process.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "Process.h"
#include <Windows.h>
#include <TlHelp32.h>
#include <string.h>
#include <fstream>
#include <time.h>
//#include <iomanip>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 唯一的应用程序对象
CWinApp theApp;
using namespace std;
void Procsee_Test()
{
BOOL Flag;
int number=0;
char ProName[]="QQ.exe"; //进行比较的进程名
HANDLE Handle_Pro;
PROCESSENTRY32 PrE;
PrE.dwSize=sizeof(PROCESSENTRY32); //设置大小
HANDLE H_handle=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //设置成0是对所有进程快照
if(H_handle==INVALID_HANDLE_VALUE)
{
cout<<"调用函数失败"<<endl;
}
Flag=::Process32First(H_handle,&PrE);
while(Flag)
{
cout<<"进程名:"; cout.width(20); cout<<PrE.szExeFile<<" ";
cout<<"进程号:"<<PrE.th32ProcessID<<endl; //信息输出
if(strcmp(PrE.szExeFile,ProName)==0) //相等返回0
{
Handle_Pro=OpenProcess(PROCESS_VM_READ,false,PrE.th32ProcessID);
if(Handle_Pro==NULL)
{
cout<<"打开进程失败!!!"<<endl;
}
}
number++;
Flag=::Process32Next(H_handle,&PrE);
}
cout<<"进程总数为:"<<number<<endl;
CloseHandle(Handle_Pro);
CloseHandle(H_handle); //清除句柄
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
HMODULE hModule = ::GetModuleHandle(NULL);
if (hModule != NULL)
{
// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("错误: MFC 初始化失败\n"));
nRetCode = 1;
}
else
{
// TODO: 在此处为应用程序的行为编写代码。
Procsee_Test();
}
}
else
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("错误: GetModuleHandle 失败\n"));
nRetCode = 1;
}
int num;
cin>>num;
return nRetCode;
}