当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

VC关闭外部exe程序的方法

发表于: 2011-06-30   作者:chicony   来源:转载   浏览次数:
exe
摘要: 终止指定进程 #include "tlhelp32.h" void KillExe(const char* szExeName) { if (szExeName == NULL) return 0; int lsr = lstrlen(szExeName); if (lsr == 0) ret

终止指定进程 

#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);

VC关闭外部exe程序的方法

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
原文: C# ASP.NET Webservice调用外部exe无效的解决方法 最近用asp.net做webservice,其中有个功能是
写在前面: 1、我们使用的是Hadoop2.2.0,Spark 1.0。 2、这里使用的样例是经典的求pai程序来演示这
在CSDN论坛看到这么一个问题:如何为第三方工具加上使用限制次数?问题的答案很简单,重新做一个应
最近这阵子,接了个私活,封装一个开发包俗称的SDK给客户调用,查阅了很多人家的SDK,绝大部分用VC
srvany.exe是什么? srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将
因为VS2005以后程序采用了manifest的生成方式,所以发布的时候要和运行库一起发布。但是我们平时开
cl.exe的功能是将源代码文件编译为可提供链接器使用的obj对象文件。cl.exe命令行参数形式如下: CL
原文: WPF程序将DLL嵌入到EXE的两种方法 WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是《Visual
这个方法主要思路是利用自定义URL Protocol来调用应用程序。浏览器在解析到自定义URL Protocol之后
WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是《Visual Studio 版本转换工具WPF版开源了》的续
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号