#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
PROCESSENTRY32 now;
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
printf(" CreateToolhelp32Snapshot调用失败! ");
return -1;
}
BOOL bMore = Process32First(hProcessSnap, &pe32);
while(bMore)
{
printf(" 进程ID号:%10u 进程名称:%20s 线程数目: %d \n ", pe32.th32ProcessID,pe32.szExeFile,pe32.cntThreads);
bMore = Process32Next(hProcessSnap, &pe32);
}
int x;
printf("当前进程信息已经打印完毕,请选择想要的功能:\n");
printf(" 1、删除某个指定的进程 2、查询某进程是否存在 3、显示某进程的地址\n");
scanf("%d",&x);
if(x==1){
printf("请输入想关闭的进程的PID\n");
scanf("%u",&now.th32ProcessID);
system("cls");
printf("您想关闭的进程信息如下:\n");
BOOL aMore = Process32First(hProcessSnap, &pe32);
while(aMore)
{
if(pe32.th32ProcessID == now.th32ProcessID){
printf(" 进程ID号:%10u 进程名称:%30s \n ", pe32.th32ProcessID,pe32.szExeFile);
break;
}
else
{
aMore = Process32Next(hProcessSnap, &pe32);
}
}
HANDLE hProcess=OpenProcess(PROCESS_TERMINATE,FALSE,pe32.th32ProcessID);
if(hProcess==NULL)
return FALSE;
if(!TerminateProcess(hProcess,0))
return FALSE;
printf("\n您的进程已经关闭成功\n");
}
else if(x==2){
printf("请输入您想查询是否存在的进程的名字 .exe\n");
scanf("%s",&now.szExeFile);
BOOL cMore = Process32First(hProcessSnap, &pe32);
int a=0;
while(cMore)
{
if(strcmp(pe32.szExeFile,now.szExeFile) ==0 ){
printf(" 存在该进程 且PID =%u ", pe32.th32ProcessID);
a=0;
break;
}
else
{
a++;
cMore = Process32Next(hProcessSnap, &pe32);
}
}
if(a!=0)
{
printf("该进程不存在\n");
}
}
else if(x==3){
printf("请输入需要查看地址的进程名字 .exe\n");
scanf("%s",&now.szExeFile);
BOOL dMore = Process32First(hProcessSnap, &pe32);
while(dMore)
{
if(strcmp(pe32.szExeFile,now.szExeFile) ==0 ){
break;
}
else
{
dMore = Process32Next(hProcessSnap, &pe32);
}
}
MODULEENTRY32 pes;
HANDLE hfilename = NULL ;
hfilename = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE , pe32.th32ProcessID );
if (hfilename == NULL )
{
printf("文件名字访问失败!");
}
BOOL i = Module32First(hfilename , &pes);
printf("文件路径: %s \n" , pes.szExePath);
}
else{
printf("功能还在完善\n");
}
return 0;
}