C++小工具.关闭进程
Posted codehousez
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++小工具.关闭进程相关的知识,希望对你有一定的参考价值。
1、根据 进程名 结束相应进程,exe名字:"__killProcessByName_console_vc6.exe"。
项目保存于 baidu云(CodeSkill33)-->全部文件 -->Util_我的小工具_小软件 -->vs08_vc6 -->进程名_枚举进程_结束进程 --> __killProcessByName_console_vc6__?????.rar
2、代码:
// __killProcessByName_console_vc6.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <windows.h> #include <TlHelp32.h> bool MatchProcessName(char* _pcProcNameSnapshot, int argc, char* argv[], int* _piIdxOut) { for (int i=1; i<argc; i++) { // strncmp 是大小写铭感的 // 还有 strcmp if (! strnicmp(_pcProcNameSnapshot, argv[i], strlen(argv[i]))) { *_piIdxOut = i; return true; } } return false; } int main(int argc, char* argv[]) { if (argc < 2) { printf("请在程序的命令行参数中,输入需要kill的进程的名字\n"); return 0; } printf("你想要结束的进程的名字为:\n"); for (int i=1; i<argc; i++) { printf("\t%s\n", argv[i]); } printf("按任意键继续,或者 关闭本窗口退出程序\n"); system("pause"); int *piKills = new int[argc]; memset(piKills, 0, argc * sizeof(int)); // ZC: 枚举进程 HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 processEntry32 = {0}; processEntry32.dwSize = sizeof(PROCESSENTRY32); BOOL bOk = Process32First(hSnapshot, &processEntry32); while (bOk) { //wprintf(L"%ws , %d\n", processEntry32.szExeFile, processEntry32.th32ProcessID); int iIdx = 0; if (MatchProcessName(processEntry32.szExeFile, argc, argv, &iIdx)) { DWORD processID = processEntry32.th32ProcessID; //break; // ZC: 强制结束进程 { // strcmp 的宽字符版 wcscmp : 比较字符串(大小写 敏感) // _stricmp 的宽字符版 _wcsicmp : 比较字符串(大小写 不敏感) HANDLE hProcess = OpenProcess(PROCESS_TERMINATE , false, processID); if (hProcess == NULL) { printf("OpenProcess err : %d\n", ::GetLastError()); system("pause"); } else { BOOL bResult = TerminateProcess(hProcess, 0); if (! bResult) { printf("TerminateProcess err : %d\n", ::GetLastError()); system("pause"); } else { piKills[iIdx] ++; } } } } bOk = Process32Next(hSnapshot, &processEntry32); } ::CloseHandle(hSnapshot); for (int j=1; j<argc; j++) { printf("\t%s 被kill掉了 \t==> %d个进程\n", argv[j], piKills[j]); } system("pause"); return 0; }
3、
4、
5、
以上是关于C++小工具.关闭进程的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段