C++怎样关闭一个已经名称的程序的进程?

[复制链接]
查看11 | 回复1 | 2010-4-1 03:02:17 | 显示全部楼层 |阅读模式
下面的一段代码是关闭任务管理器的.你试一下.我是在控制台下写的.任务管理器应该可以屏蔽掉的,你到网上找一下,应该有相关的知识.你已屏蔽了键盘输入是什么意思?那样的话,怎么开锁?在编写这类程序的时候,最好是先给程序留一个后门,比如:按F1退出程序.要不然后话,很容易就输入不了信息,只能重启电脑了.#include //#include #include #include #pragma comment(lib, "Kernel32.lib")int main(){ HANDLE hProcessSnap = NULL; PROCESSENTRY32 process32; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); process32.dwSize = sizeof(PROCESSENTRY32);BOOL b = Process32First(hProcessSnap, &process32); HANDLE hProcess; while (b) {CString strTempName;strTempName.Format("%s", process32.szExeFile);
if (strTempName.Find("taskmgr") != -1){ DWORD dwId = process32.th32ProcessID; hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwId); if ( NULL == hProcess ) {
return 0; } //printf("%d", GetLastError()); TerminateProcess(hProcess, 0); //printf("%d", GetLastError()); CloseHandle(hProcess);}b = Process32Next(hProcessSnap,&process32); } return 0;}
回复

使用道具 举报

千问 | 2010-4-1 03:02:17 | 显示全部楼层
1. 遍历进程,得到进程IDDWORD GetProcessID(LPCTSTR lpProcessName){//创建进程快照HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if(hSnapshot != INVALID_HANDLE_VALUE){PROCESSENTRY32 pe32 = {0};pe32.dwSize = sizeof(pe32);//拿到第一个进程信息if(!Process32First(hSnapshot, &pe32)){CloseHandle(hSnapshot);return FALSE;}do {int nLen = _tcslen(lpProcessName);int nLen2 = _tcslen(pe32.szExeFile);if(nLen != nLen2){continue;}if(_tcscmp(lower(lpProcessName), lower(pe32.szExeFile)) == 0){return pe32.th32ParentProcessID;}} while (Process32Next(hSnapshot, &pe32));}return 0;}2. 获取进程句柄HANDLE hProcess = OpenProcess(PROCESS_TERMINATE,FALSE,GetProcessID("yourprocessname")); 3. 结束进程TerminateProcess(hProcess,0);//关闭进程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行