C++ 获取进程列表 并关闭相应的进程

// jinchen.cpp : Defines the entry point for the console application.
//


#include "stdafx.h"


#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>




#define WIN32_LEAN_AND_MEAN// 从 Windows 头中排除极少使用的资料  
  
#include<windows.h>  
#include<tlhelp32.h>  
#include<stdlib.h>  
  
#define num 1  


  
LPSTR lpsz[num]={"cmd.exe"};  
  
DWORD WINAPI StopProcess(LPVOID lpParam){  
    HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  
    PROCESSENTRY32 pe;  
    int k(num);  
    HANDLE hProcess;  
    if(k==0)  
        return 0;  
    Process32First(hSnapshot,&pe);  
    do{  
        for(int i=0;i!=num;i++)  
            if(lstrcmpi(pe.szExeFile,lpsz[i])==0){  
                k--;  
                hProcess=OpenProcess(PROCESS_TERMINATE,FALSE,pe.th32ProcessID);  
                if(hProcess){  
                    TerminateProcess(hProcess,0);  
                    CloseHandle(hProcess);//OpenProcess打开的也要关闭  
                }  
            }  
    }while(Process32Next(hSnapshot,&pe)&&k);  
    CloseHandle(hSnapshot);  
    return 0;  
}  
//
BOOL KillProcessById(DWORD pID) 

       HANDLE Hwnd; 
       bool ret = FALSE; 
       Hwnd = OpenProcess(PROCESS_TERMINATE | SYNCHRONIZE,0,pID); 
       if (Hwnd) 
       { 
              if (TerminateProcess(Hwnd, 0)) 
              { 
                     ret = true; 
              } 
       } 
       return ret; 



//
int main(int argc,char* argv[])
{


int pid;
PROCESSENTRY32 pe32;
//再使用这个结构体前先定义它的大小
pe32.dwSize=sizeof(pe32);
//给系统内的所有进程拍一个快照
HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap==INVALID_HANDLE_VALUE)
{
  printf("Create ToolHelp32Snaphhot调用失败!\n");
  return -1;
}
BOOL bMore=::Process32First(hProcessSnap,&pe32);
//
  FILE *stream;
stream=fopen("text1.txt","w+");
while(bMore)
{
  printf("进程名称:|%s  ",pe32.szExeFile);
  printf("进程ID号:|%u\nn",pe32.th32ProcessID);
  bMore=::Process32Next(hProcessSnap,&pe32);
  //pe32.szExeFile
  if (!strcmp(pe32.szExeFile,"QQ.exe"))
  pid =pe32.th32ProcessID;
  fprintf(stream,"%s\n",pe32.szExeFile);


}
fclose(stream);
printf("不要忘记清楚掉snapshot");
::CloseHandle(hProcessSnap);
getchar();
KillProcessById(pid);




return 0;
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值