VC关闭外部exe程序的方法

编程技术  /  houtizong 发布于 3年前   95

终止指定进程 

#include "tlhelp32.h" 

void KillExe(const char* szExeName) 

if (szExeName == NULL) 
return 0; 
int lsr = lstrlen(szExeName); 
if (lsr == 0) 
return 0; 

PROCESSENTRY32 my; 
HANDLE l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
if (((int)l) != -1) 

my.dwSize = sizeof(my); 
if (Process32First(l, &my)) 

do 

if (lstrcmpi(szExeName, my.szExeFile + lstrlen(my.szExeFile) - lsr) == 0) 

HANDLE hProcessHandle; 
hProcessHandle = OpenProcess(0x1F0FFF, true, my.th32ProcessID); 
if (hProcessHandle != NULL) 

if (TerminateProcess(hProcessHandle, 0) != NULL) 

CloseHandle(hProcessHandle); 


CloseHandle(l); 
return; 

}while (Process32Next(l, &my)); 

CloseHandle(l); 

}



调用方式 
KillExe("c:\\windows\\notepad.exe"); 

完整或部分路径名,不区分大小写
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////上述方法已经由我于09.10.23日亲测过,可行///////////////////////////////////////////////////

/////////下面再介绍另外几种方法,没有亲测过,希望网友们测试以后给个答复,谢谢!///////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// 一种方法
HWND hWnd = ::FindWindow(NULL, _T("MSDN Library Visual Studio 6.0")); // 注: 这个是窗口的标题文字
if (NULL != hWnd) {
       ::SendMessage(hWnd, WM_CLOSE, 0, 0);
   }

//另外一种方法
DWORD id_num;
HWND hWnd = ::FindWindow(NULL, _T("MSDN Library Visual Studio 6.0")); 
GetWindowThreadProcessId(hWnd, &id_num); //注意:第二个参数是进程的ID,返回值是线程的ID。
HANDLE hd = OpenProcess(PROCESS_ALL_ACCESS,FALSE, id_num);
TerminateProcess(hd, 0);

如果窗口文字是会变的,可以使用FindWindow的第一个参数:应用程序的类名。
可以通过VC提供的Spy++这个软件获得ClassName。
从开始菜单->MS 6.0 Tools->spy++,找出你要关闭的程序,比如说spy++,双击它,看Class选项的Class Name是Afx:400000:8:10011:0:15503db。
然后:
HWND hWnd = ::FindWindow(_T("Afx:400000:8:10011:0:15503db"), NULL); 
GetWindowThreadProcessId(hWnd, &id_num); //注意:第二个参数是进程的ID,返回值是线程的ID。
HANDLE hd = OpenProcess(PROCESS_ALL_ACCESS,FALSE, id_num);
TerminateProcess(hd, 0);

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客