工控安全系统编程之基础网络编程

一、实验要求
实现进程管理器

  1. 能列出操作系统当前运行的进程
  2. 实现进程管理,如杀掉进程,输入进程名或进程ID,自动结束进程
  3. 不要求有界面,命令行窗口即可
    二、源代码
#include "windows.h"
#include "tlhelp32.h"
#include "stdio.h"
#include <iostream>
using namespace std;

BOOL killps(DWORD ProcessId)
{
	HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
	if (hProcess == NULL)
		return FALSE;
	if (!TerminateProcess(hProcess, 0))
		return FALSE;
	return TRUE;
}

void showps()
{
	PROCESSENTRY32 pe32;
	//在使用这个结构前,先设置它的大小
	pe32.dwSize = sizeof(pe32);
	//给系统内所有的进程拍个快照
	HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	if (hProcessSnap == INVALID_HANDLE_VALUE)
	{
		printf("CreateToolhelp32Snapshot 调用失败.\n");
		//return -1;
	}
	//遍历进程快照,轮流显示每个进程的信息
	BOOL bMore = ::Process32First(hProcessSnap, &pe32);
	while (bMore)
	{
		printf("进程名称:%s\n", pe32.szExeFile);
		printf("进程ID:%u\n\n", pe32.th32ProcessID);
		bMore = ::Process32Next(hProcessSnap, &pe32);
	}
	//不要忘记清除掉snapshot对象
	::CloseHandle(hProcessSnap);
}

int main(int argc, char* argv[])
{
		 int flag;
		 cout << "输入1显示进程,输入2杀掉进程" << endl;
		 while (cin >> flag)
		 {
			 if (flag == 1)
			 {
				 showps();
				 cout << "####################################################################################" << endl;
			 }
				 
			 if (flag == 2)
			 {
				 int id;
				 cout << "杀掉:";
				 cin >> id;
				 killps(id);
			 }
			 cout << "输入1显示进程,输入2杀掉进程" << endl;
		 }
		
		 int a;
		 cin >> a;
		return 0;
}

三、程序运行
1.显示进程
在这里插入图片描述

2.终止mstsc.exe
在这里插入图片描述

四、总结
通过本次实验,我对C++的系统函数有了一定的认识,学会了显示和根据id终止进程,希望以后可以把学到的知识用到更多的地方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值