遍历进程 结束某个进程
admin
2023-08-02 01:40:07
0
 

 

#include  

    HANDLE hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

           //现在我们获得了所有进程的信息。
       //将从hSnapShot中抽取数据到一个PROCESSENTRY32结构中
       //这个结构代表了一个进程,是ToolHelp32 API的一部分。
       //抽取数据靠Process32First()和Process32Next()这两个函数。
       //这里我们仅用Process32Next(),他的原形是:
       //BOOL WINAPI Process32Next(HANDLE hSnapshot,LPPROCESSENTRY32 lppe);
       //我们程序的代码中加入:
       PROCESSENTRY32* processInfo=new PROCESSENTRY32;
       // 必须设置PROCESSENTRY32的dwSize成员的值 ;
       processInfo->dwSize=sizeof(PROCESSENTRY32);
       int index=0;
       //这里我们将快照句柄和PROCESSENTRY32结构传给Process32Next()。
       //执行之后,PROCESSENTRY32 结构将获得进程的信息。我们循环遍历,直到函数返回FALSE。
       printf("****************开始列举进程****************/n");
       int ID = 0;
       while(Process32Next(hSnapShot,processInfo)!=FALSE)
       {
           index++;
           printf("****************** %d ******************/n",index);
           printf("PID       Name      Current Threads/n");
           printf("%-15d%-25s%-4d/n",processInfo->th42ProcessID,processInfo->szExeFile,processInfo->cntThreads);
           int size=WideCharToMultiByte(CP_ACP,0,processInfo->szExeFile,-1,NULL,0,NULL,NULL);
           char *ch=new char[size+1];
           if(WideCharToMultiByte(CP_ACP,0,processInfo->szExeFile,-1,ch,size,NULL,NULL))
           {
               if(strstr(ch,"cmd.exe"))//使用这段代码的时候只需要改变"cmd.exe".将其改成你要结束的进程名就可以了。
             {
                    ID = processInfo->th42ProcessID;
                    qDebug()<<"ID ="<
                    HANDLE hProcess;
                    // 现在我们用函数 TerminateProcess()终止进程:
                    // 这里我们用PROCESS_ALL_ACCESS
                    hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,ID);
                    if(hProcess==NULL)
                    {
                        printf("Unable to get handle of process: ");
                        printf("Error is: %d",GetLastError());
                    }
                    TerminateProcess(hProcess,0);
                    CloseHandle(hProcess);
               }
           }
       }
       CloseHandle(hSnapShot);
       delete processInfo;
       typedef HANDLE (_stdcall *WTSOPENSERVER)(
       LPTSTR pServerName //NetBios指定的终端服务名,如果我们查看本地终端所有进程信息我们可以通过在控制台命令行下用nbtstat –an来获取本机NetBios名。如图3所示。
       );


相关内容

热门资讯

原创 驰... 连日来,受强降雨影响,广西多地水位暴涨,传统光学卫星因云层遮挡无法获取清晰图像。智星空间紧急调度在轨...
目前AI浪潮中最靓的仔,也是最... 2022年11月30日,ChatGPT发布。这一标志性事件被广泛认为是AI从技术圈走向全民爆火的核心...
本田汽车,正在从中国消失 本田汽车,过两年可能快从中国消失了。 没错,本田在华销量,从阴跌演变成了崩盘! 懂车帝数据,本田上半...
润州,全力迎战台风! 闻风而动,严阵以待! 今年第9号台风“巴威”步步逼近, 风雨防御形势紧迫 目前, 各街道、部门纷纷行...
东鹏自动马桶的自动冲水怎么调 东鹏自动马桶的自动冲水功能通常可以通过以下步骤进行调节:1. 找到控制面板:在马桶上或附近寻找控制面...
创维32k08rd花屏重启 1、很大的原因就是由于旁边可能有带磁性的物品,所以在开启的时出现花屏的状况。2、或是显示屏里面的零件...
电热水器温度显示一直闪烁怎么回... 电热水器温度显示一直闪烁怎么回事?1、因为在电热水器当中的水垢沉积的很多,就会出现温度显示一直闪烁;...
热水器排污棒坏了是不是热水器不... 热水器仍然可以出热水,但是排污泵应该及时地更换。热水器的排污泵坏了,热水器仍旧可以出热水,但是对于后...
海尔统帅空调显示f3 这情况日常生活中比较常见,需排查是否室外机电路板与功率模块出现问题;是否长时间使用导致制冷过负荷保护...
核查|中企投资五百万美元“掌控... 明查员 陶亚迪速览- 网传说法描述的项目指的是塞拉利昂信息和公民教育部与中国迪明易墨印刷有限公司在2...