vc 关闭外部程序

来源:互联网 发布:网络直销产品的优缺点 编辑:程序博客网 时间:2024/05/19 05:03
举个例子,通过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;
}

这里用到的函数主要是:
CreateToolhelp32SnapshotPROCESSENTRY32、Process32First、OpenProcess、TerminateProcess、Process32Next。
注意:这里是通过判断进程名来结束指定的进程,有时候多个程序有相同的进程名,比如当打开多个IE浏览器时,这多个IE浏览器的进程名都是一样的,如果这时通过上面的方法来结束进程时,会同时关闭所有的IE浏览器(因为它们的进程名相同)。
原创粉丝点击