博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模拟任务资源管理器的小程序
阅读量:6902 次
发布时间:2019-06-27

本文共 2223 字,大约阅读时间需要 7 分钟。

一 . 新建基于对话框的MFC项目

在对话框上添加ListCtrl控件 , 右键添加变量 , 在OnInitDialog中初始化

MylistCtrl.InsertColumn(0,_T("Name"),0,100);    MylistCtrl.InsertColumn(1,_T("ProcessID"),0,100);    MylistCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);//点击任意列可选中一行    GetProcess();

二 . 获得每个进程信息

获取系统中正在运行的进程信息  :CreateToolhelp32Snapshot

获得运行的进程链表的首部  :Process32First

获得运行的进程链表的下一个 :Process32Next

通配符:_T()  和 TCHAR:

    当为Unicode字符集(即宽字符集)的时候,变量为L" "和 char;          

    当为多字节字符集的时候,变量为" "  和 wchar

void CProcessDlg::GetProcess(){    PROCESSENTRY32 pe32;    pe32.dwSize = sizeof(pe32);    HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);    if(handle == INVALID_HANDLE_VALUE) return;    BOOL bflag = Process32First(handle,&pe32);    CString str;    while(bflag)    {           str.Format(_T("%d"),pe32.th32ProcessID);//将数字转换成字符串        MylistCtrl.InsertItem(0,pe32.szExeFile);//向每一行中插入进程名        MylistCtrl.SetItemText(0,1,str);//向每一行的第二列中插入进程序号        bflag = Process32Next(handle,&pe32);    }}

三  . 当点击结束按钮的功能函数

1.获得选中项 :(索引)GetSelectionMark() , (文本)GetItemText()

2.获得句柄   :OpenProcess()

3.杀死进程   :TerminateProcess()

void CProcessDlg::OnBnClickedButton1(){    //1.获得选中项    int index;    CString str;    index = MylistCtrl.GetSelectionMark();    if(index != -1)//获取索引成功    str = MylistCtrl.GetItemText(index , 1);//index为文本将检索项的索引。1为指定文本要检索的子项    //2.获得句柄    HANDLE h_process = OpenProcess(PROCESS_TERMINATE ,FALSE ,_ttoi(str));//将CString转换为int    int n = GetLastError();//取得上一个函数操作时所产生的错误代码。    if(h_process)    {        TerminateProcess(h_process,-1);//第二个参数为发给操作系统的退出码        MylistCtrl.DeleteItem(index);//从listctrl中删除    }}
GetLastError()函数返回的错误值可以在:工具->错误查找中输入错误码查找错误 小知识点:             strlen() 和 sizeof() char* p = "abcde";        5      4 char p[10] = "abcde";       5      10 char p[] = "abcde";        5      6 strlen():计算字符串的长度,以\0'为字符串结束标记。 sizeof() :计算的则是分配的数组所占的内存空间的大小,不受里面存储的内容影响 区别: 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。  该类型保证能容纳实现所建立的最大对象的字节大小 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。  sizeof还可以用函数做参数为函数的返回类型所占的空间大小。函数的返回类型不能是void。 4.数组做sizeof的参数不退化,传递给strlen就退化为指针了 5.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数 6.sizeof在编译的时候计算过了
 

转载于:https://www.cnblogs.com/Lune-Qiu/p/8378403.html

你可能感兴趣的文章
Spring MVC+Fastjson之时间类型序列化
查看>>
【ospf-路由过滤】
查看>>
进阶: 案例八: Drag and Drop(动态)
查看>>
Remove Duplicates from Sorted List II
查看>>
Python中else的用法
查看>>
蓝桥杯 迷宫
查看>>
多行截断
查看>>
完成个人中心 导航标签
查看>>
使用位生成子集
查看>>
需求分析--12章 过程建模
查看>>
C#运用实例.读取csv里面的词条,对每一个词条抓取百度百科相关资料,然后存取到数据库...
查看>>
css3选择器
查看>>
nginx虚拟主机配置
查看>>
PYthon基础
查看>>
delphi 把一个表的内容转到另一个表暂存时出错的解决方法。
查看>>
Android Studio 使用笔记:[转] Mac下修改Android Studio 所用的JDK版本
查看>>
《陶哲轩实分析》习题10.4.1
查看>>
【转载】浅析java中的语法糖
查看>>
Windows API 第21篇 DeleteVolumeMountPoint 删除挂载点
查看>>
CSS一些解决办法收集整理
查看>>