举个例子,通过VC编程来关闭外部的程序或结束一个进程,如下:
//通过判断当前的进程名来结束指定的进程(即关闭指定的程序)
bool TerminateProcessByName(const CString strProcessName)
{
bool bResult = false; //函数返回值
HANDLE hSnapshot =
CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS,0);
if(hSnapshot == INVALID_HANDLE_VALUE)
{
bResult = false;
}
PROCESSENTRY32 ProcessInfo;
ProcessInfo.dwSize = sizeof(PROCESSENTRY32);
//获取第一个进程的信息
BOOL bStatus =
Process32First(hSnapshot,&ProcessInfo);
while(bStatus)
{
//获取当前进程的进程名
CString strCurrentProcessName = ProcessInfo.szExeFile;
//判断是否找到了指定的文件
if (strProcessName.CompareNoCase(strCurrentProcessName) == 0)
{
//获取当前进程的句柄
HANDLE hCurrentProcess =
OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessInfo.th32ProcessID);
if (hCurrentProcess == NULL)
{
bResult = false;
}
else
{
//结束当前的进程
TerminateProcess(hCurrentProcess,0);
bResult = true;
break;
}
}
else
{
//获取下一个进程的信息
bStatus =
Process32Next(hSnapshot,&ProcessInfo);
}
}
return bResult;
}
这里用到的函数主要是:
CreateToolhelp32Snapshot 、
PROCESSENTRY32、
Process32First、
OpenProcess、
TerminateProcess、
Process32Next。
注意:这里是通过判断进程名来结束指定的进程,有时候多个程序有相同的进程名,比如当打开多个IE浏览器时,这多个IE浏览器的进程名都是一样的,如果这时通过上面的方法来结束进程时,会同时关闭所有的IE浏览器(因为它们的进程名相同)。