关闭

vc 关闭外部程序

929人阅读 评论(2) 收藏 举报
举个例子,通过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浏览器(因为它们的进程名相同)。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1880次
    • 积分:22
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:3篇
    • 译文:0篇
    • 评论:2条
    文章存档
    最新评论