#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_ACCESShProcess=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所示。);另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章标题:遍历进程结束某个进程-创新互联
本文网址:http://chengdu.cdxwcx.cn/article/cdchjj.html