0%

C-04_进程遍历与关闭

进程遍历

效果类似于tasklist

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <TlHelp32.h>

void main() {


HANDLE hd = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //遍历所有进程
PROCESSENTRY32 pe;
pe.dwSize = sizeof(pe);

Process32First(hd, &pe);
while (Process32Next(hd, &pe)) {
//szExeFile是WCHAR宽字符型,把%s改成%ls就可以了 如果使用%s只会显示第一个字母(我这里默认字符集是使用Unicode字符集)
// 或者将项目字符集修改为 未设置即可
printf("%ls %d\n", pe.szExeFile, pe.th32ProcessID);
}

CloseHandle(hd);

}

进程关闭

强制 关闭进程/线程 TerminateProcess()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#define _CRT_SECURE_NO_DEPRECATE 1
#define _CRT_NONSTDC_NO_DEPRECATE 1

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <TlHelp32.h>
#include <string.h>

void main() {


HANDLE hd = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //遍历所有进程
PROCESSENTRY32 pe;
pe.dwSize = sizeof(pe);

Process32First(hd, &pe);

char* name = "cmd.exe";
while (Process32Next(hd, &pe)) {

//printf("%s %d\n", pe.szExeFile, pe.th32ProcessID);
HANDLE ClosedProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pe.th32ProcessID);

if ((stricmp("cmd.exe",pe.szExeFile))== 0) {// stricmp i 忽略大小写
//stricmp 要在前面加上两行注释 不然会报错 #define _CRT_SECURE_NO_DEPRECATE 1 和 #define _CRT_NONSTDC_NO_DEPRECATE 1

TerminateProcess(ClosedProcess, -1);

}

}

CloseHandle(hd);

}

欢迎关注我的其它发布渠道

------------- 💖 🌞 本 文 结 束 😚 感 谢 您 的 阅 读 🌞 💖 -------------