windows7 C语言打印目前进程列表、删除一个进程、显示一个进程地址。
来源:互联网 发布:单片机cy标志为 编辑:程序博客网 时间:2024/06/06 00:24
#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; // 给系统内的所有进程拍一个快照 // CreateToolhelp32Snapshot可以通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。 // TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。 HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(hProcessSnap == INVALID_HANDLE_VALUE) { printf(" CreateToolhelp32Snapshot调用失败! "); return -1; } // 遍历进程快照,轮流显示每个进程的信息 //用来 Process32First指向第一个进程信息,并将进程信息抽取到PROCESSENTRY32-pe32中。 BOOL bMore = Process32First(hProcessSnap, &pe32); while(bMore) { printf(" 进程ID号:%10u 进程名称:%20s 线程数目: %d \n ", pe32.th32ProcessID,pe32.szExeFile,pe32.cntThreads); bMore = Process32Next(hProcessSnap, &pe32); //用Process32Next指向下一条进程信息。 } int x; printf("当前进程信息已经打印完毕,请选择想要的功能:\n"); printf(" 1、删除某个指定的进程 2、查询某进程是否存在 3、显示某进程的地址\n"); scanf("%d",&x); if(x==1){ printf("请输入想关闭的进程的PID\n"); scanf("%u",&now.th32ProcessID);//now.th32parentprocessid存放选择的进程号 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);//now.th32parentprocessid存放选择的进程号 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); //system(pes.szExePath); } else{ printf("功能还在完善\n"); } return 0;}
阅读全文
0 0
- windows7 C语言打印目前进程列表、删除一个进程、显示一个进程地址。
- C语言杀掉一个进程
- java启动一个进程、杀死一个进程、显示当前进程
- vc实现打印当前进程列表和进程地址
- Windows7 显示进程pid
- 进程列表显示初探
- 显示进程列表
- c语言 多进程 递增输出一个变量
- C语言枚举进程,实现一个简单的内存补丁
- 删除多余进程(同类进程只留一个)
- 【C语言】利用kill函数实现一个进程向另一个进程发送信号
- C 语言 创建一个进程,并取得新建进程ID 和新建进程的主线程ID
- 一个进程的输出结果在另一个进程中显示
- bat查到一个进程,并删除实例
- 显示一个进程的内存状态
- mfc获取一个进程并前端显示
- 创建一个进程打开另外一个进程
- 寻找端口列表 删除进程
- OSGI入门
- hdu_5649 DZY Loves Sorting
- hdu1050 Moving Tables
- 一个能够快速把JSON数据格式化成漂亮网页的开源JavaScript库:angular-json-human
- thinkphp函数及常量
- windows7 C语言打印目前进程列表、删除一个进程、显示一个进程地址。
- UVA 1594 Ducci Sequence
- 【bzoj1050】[HAOI2006]旅行comf
- Jacobian矩阵和Hessian矩阵
- 图的建立 BFS DFS
- 朋友圈的“真相”—并查集(UnionFindSet)
- laravel学习总结
- 基于FFmpeg的封装格式MP4(TS)
- dedecms标签大全