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

本文共 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

你可能感兴趣的文章
ubuntu一些脚本的执行顺序
查看>>
类继承的结构
查看>>
Intel 被 ARM 逼急了
查看>>
testng + reportng 测试结果邮件发送
查看>>
百度亮相iDASH,推动隐私保护在人类基因组分析领域的应用
查看>>
Python「八宗罪」
查看>>
你的隐私还安全吗?社交网络中浏览历史的去匿名化
查看>>
NeurIPS 2018|如何用循环关系网络解决数独类关系推理任务?
查看>>
Windows 10 份额突破 40%,Windows 7 连跌四月终回升
查看>>
怎么把Maven项目转为动态Web项目?
查看>>
Arm发布Cortex-A76AE自动驾驶芯片架构,宣示车载系统市场主权
查看>>
FreeBSD ports中make可带有的参数(转)
查看>>
Hibernate入门教程
查看>>
Java支付宝扫码支付[新]
查看>>
SpringMVC 拦截器 筛选
查看>>
第十八章:MVVM(八)
查看>>
点击表头切换升降序排序方式
查看>>
第26天,Django之include本质
查看>>
Java中静态变量和实例变量的区别
查看>>
秋名山老司机(详解)——bugku
查看>>