通过进程id结束进程很简单,通过进程名去结束进程稍微麻烦点。有些代码其实就是通用的,每次都要上网找半天,
以后要将常用代码整理起来才好。
以下是该函数:
Code
1 BOOLEAN Kill(char* pName){
2 DWORD aProcesses[1024],dwSize,dwSize2;
3 char szProcessName[MAX_PATH]={0};
4 DWORD Pid=0;
5 unsigned int i;
6 if (!EnumProcesses(aProcesses,sizeof(aProcesses),&dwSize)) {
7 return FALSE;
8 }
9 dwSize2=dwSize/sizeof(DWORD);
10 for (i=0;i<dwSize2;i++)
11 {
12 HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
13 FALSE,
14 aProcesses[i]);
15 if (hProcess)
16 {
17 HMODULE hMod;
18 DWORD dwSize;
19 if (EnumProcessModules(hProcess,&hMod,sizeof(hMod),&dwSize)){
20 GetModuleBaseName(hProcess,hMod,szProcessName,sizeof(szProcessName));
21 }
22 if (strcmp(szProcessName,pName)==0)
23 {
24 Pid=aProcesses[i];
25 CloseHandle(hProcess);
26 break;
27 }
28 }
29 CloseHandle(hProcess);
30 }
31 HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid);
32 if(NULL!=hProcess)
33 {
34 TerminateProcess(hProcess, 0);
35 }
36 CloseHandle(hProcess);
37 return TRUE;
38 }
39
1 BOOLEAN Kill(char* pName){
2 DWORD aProcesses[1024],dwSize,dwSize2;
3 char szProcessName[MAX_PATH]={0};
4 DWORD Pid=0;
5 unsigned int i;
6 if (!EnumProcesses(aProcesses,sizeof(aProcesses),&dwSize)) {
7 return FALSE;
8 }
9 dwSize2=dwSize/sizeof(DWORD);
10 for (i=0;i<dwSize2;i++)
11 {
12 HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
13 FALSE,
14 aProcesses[i]);
15 if (hProcess)
16 {
17 HMODULE hMod;
18 DWORD dwSize;
19 if (EnumProcessModules(hProcess,&hMod,sizeof(hMod),&dwSize)){
20 GetModuleBaseName(hProcess,hMod,szProcessName,sizeof(szProcessName));
21 }
22 if (strcmp(szProcessName,pName)==0)
23 {
24 Pid=aProcesses[i];
25 CloseHandle(hProcess);
26 break;
27 }
28 }
29 CloseHandle(hProcess);
30 }
31 HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid);
32 if(NULL!=hProcess)
33 {
34 TerminateProcess(hProcess, 0);
35 }
36 CloseHandle(hProcess);
37 return TRUE;
38 }
39
因为使用了psapi库,所以前面需要include <psapi.h> 以及
#pragma comment(lib, "psapi.lib")
VC6里面没有自带psapi库,可以通过这里下载: psapi下载
调用方式就是Kill("notepad.exe");
这样就结束了notepad.exe 进程