读书人

为什么这个程序每次只能结束一条进程,

发布时间: 2012-03-17 19:06:28 作者: rapoo

为什么这个程序每次只能结束一条进程,如果我打开多个IE,想把它们全部结束,应该怎么改?
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <string.h>

#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>
HWND find();
void main()
{
HWND hChildPro = find();
if(hChildPro != NULL)
TerminateProcess(hChildPro,NULL);
}

HWND find()
{
HWND hProcess;
DWORD th32ProID = NULL;
bool found = false;
HANDLE SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

if(SnapShot == INVALID_HANDLE_VALUE)
return 0;

PROCESSENTRY32 ProcessInfo;
ProcessInfo.dwSize = sizeof(ProcessInfo);

BOOL Status = Process32First(SnapShot,&ProcessInfo);

while(Status)
{
if(strstr(ProcessInfo.szExeFile, "notepad.exe ") != NULL)
{
found = true;
th32ProID = ProcessInfo.th32ProcessID;
hProcess = (HWND)OpenProcess(PROCESS_ALL_ACCESS,0,ProcessInfo.th32ProcessID);
break;
}
Status = Process32Next(SnapShot,&ProcessInfo);
}
CloseHandle(SnapShot);
return (HWND)hProcess;
}




[解决办法]
这个帖子也是楼主你的吧:http://community.csdn.net/Expert/topic/5730/5730970.xml?temp=.8361322
按那个帖子的来就ok的了……

你这个程序,你关闭的是find返回的那个进程,而find只能返回一个进程,当然就只能关闭一个了……
把if(hChildPro != NULL)改成while(hChildPro != NULL)

顺便说一句,上次的帖子你都没结……

读书人网 >C语言

热点推荐