vc 关闭进程

终止指定进程 

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

//另外一种方法
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,0);

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...