摘要:本文主要向大家介绍了C/C++知识点之C++小工具.关闭进程,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之C++小工具.关闭进程,通过具体的内容向大家展示,希望对大家学习C/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;
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号