• 强杀进程


    // ProcessDemo.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <Windows.h>
    #include <stdio.h>
    #include <conio.h>
    #include <iostream>
    #include <string>
    using namespace std;
    #include <Psapi.h>
    #pragma comment(lib,"psapi.lib")
    
    
    BOOL KillProcess(string strProcessName)
    {
    	DWORD dwProcessID[256]={0};		//进程ID
    	DWORD dwNeed=0;					//当前运行进程的字节
    	DWORD dwProcessCount=0;			//当前运行进程的个数
    	//枚举所有进程
    	EnumProcesses(dwProcessID,sizeof(dwProcessID),&dwNeed);
    	dwProcessCount=dwNeed/sizeof(DWORD);
    	//打开进程
    	HANDLE hProcess=NULL;
    	char strPathName[256]={0};		//记录进程路径
    	HMODULE hModule=NULL;
    	DWORD dwIndex=0;				//记录是否找到进程
    	for(DWORD i=0;i<dwProcessCount;++i)
    	{
    		//打开进程
    		 hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_TERMINATE,FALSE,dwProcessID[i]);
    		if(hProcess)
    		{
    			//枚举进程模块
    			 EnumProcessModules(hProcess,&hModule,sizeof(HMODULE),&dwNeed);
    			 memset(strPathName,0,sizeof(strPathName));
    			//获取进程具体路径及名称
    			GetProcessImageFileNameA(hProcess,strPathName,sizeof(strPathName));
    			cout<<strPathName<<'	'<<dwProcessID[i]<<endl;
    			//关闭进程
    			//比较输入路径与搜索路径是否相同
    			string strTemp=strPathName;
    			if(strTemp.find(strProcessName)!=-1)
    			{
    				//结束进程
    				TerminateProcess(hProcess,0);	
    				dwIndex++;
    			}
    		}
    		else
    			cout<<"打开进程失败"<<endl;
    	}
    	if(dwIndex>0)
    	{
    		CloseHandle(hProcess);
    		return TRUE;
    	}
    	else
    		return FALSE;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	string strProcessName;
    	char ch='a';
    	while(ch!=27)
    	{
    		system("cls");
    		cout<<"输入要查杀的进程名:";
    		cin>>strProcessName;
    		if(KillProcess(strProcessName))
    			cout<<endl<<"结束进程成功"<<endl;
    		else
    			cout<<endl<<"结束进程失败"<<endl;
    		
    		cout<<endl<<"随意键继续 ESC退出"<<endl;
    		ch=getch();
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    javaweb消息中间件——rabbitmq入门
    virtual box 桥接模式(bridge adapter)下无法获取ip(determine ip failed)的解决方法
    Apache Kylin本地启动
    git操作
    Java学习总结
    Java中同步的几种实现方式
    hibernate exception nested transactions not supported 解决方法
    vue 中解决移动端使用 js sdk 在ios 上一直报invalid signature 的问题解决
    cookie 的使用
    vue 专门为了解决修改微信标题而生的项目
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/10963188.html
Copyright © 2020-2023  润新知