结束进程的几种方法

一、最简单(实则是调用dos外部命令)

如:

::system("taskkill /f /im qq.exe");

 

 

 

二、也很简单,对只对有窗口的进程有效

如:

HWND hwnd=FindWindow(NULL,"QQ2011");

assert(hwnd);

SendMessage(hwnd,WM_ENDSESSION,0,0);

实则是模拟windows关机,关于详细介绍请查看:

http://blog.csdn.net/qq752923276/archive/2011/05/03/6386388.aspx

 

 

 

三、没得说了,遍历进程,再kill ,遍历进程有几种方式(EnumProcess、Toolhelp、NtQuerySystemInfo等)

这里使用Toolhelp系列API

#include <tlhelp32.h> HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(hSnapshot==INVALID_HANDLE_VALUE) return ; PROCESSENTRY32 pe32={0}; pe32.dwSize=sizeof pe32; DWORD dwProcessId=0; int err; if(Process32First(hSnapshot,&pe32)) { do { String strProcess=pe32.szExeFile; if(strProcess.UpperCase()=="QQ.EXE") { dwProcessId=pe32.th32ProcessID; break; } }while(Process32Next(hSnapshot,&pe32)); } CloseHandle(hSnapshot); if(!dwProcessId) return ; HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,False,dwProcessId); err=GetLastError(); TerminateProcess(hProcess,0); CloseHandle(hProcess); 

2011-05-13 18:21:22

 

你可能感兴趣的:(windows,String,dos,kill,System,Access)