环境:VS2010/MFC/对话框

效果图:

目录:

1.  关于windows进程信息获取

2.  CListCtrl的使用

---------------------------------------------------------

1. windows进程信息获取

  需要包含头文件

  #include <psapi.h>
  #include <TlHelp32.h>

#pragma  comment(lib,"Psapi.lib")

主要函数使用

  CreateToolhelp32Snapshot, Process32First,OpenProcess, GetProcessMemoryInfo,Process32Next。

  PROCESSENTRY32结构中保存进程信息,

  szExeFile--进程名称

  th32ProcessId--进程Id

  cntThreads--进程包含线程数

  th32ParentProcessId--父进程ID

  pcPriClassBase--线程基础优先级

  内存信息保存在PROCESSMEMORYCOUNTERS中,windows内存项分很多种,下图是从win7任务管理器的查看--选择列中所截的图,

  

  其中,任务管理器上默认显示的是专用工作集内存,指得是该程序独有的,不和其他程序共享的。

  这一项不知道怎么获取,PROCESSMEMORYCOUNTERS中没有。程序中暂时用的workingsetsize,包含了可能被其他程序共享的内存。

 按钮响应代码:

 void CSystemProcessDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
m_listctrl.DeleteAllItems();
HANDLE hSnapshot;
//创建进程信息快照
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
//进程信息结构体
PROCESSENTRY32 pe;
//取得第一个
Process32First(hSnapshot, &pe);
CString str;
int i = ;
do
{
m_listctrl.InsertItem(i, pe.szExeFile);
str.Format("%d", pe.th32ProcessID);
m_listctrl.SetItemText(i,,str); str.Format("%d", pe.cntThreads);
m_listctrl.SetItemText(i,,str); str.Format("%d", pe.th32ParentProcessID);
m_listctrl.SetItemText(i,,str); str.Format("%d", pe.pcPriClassBase);
m_listctrl.SetItemText(i,,str); //根据进程ID获取内存使用信息
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,pe.th32ProcessID);
if(hProcess)
{
//内存信息结构
PROCESS_MEMORY_COUNTERS pmc;
if (GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)))
{
str.Format("%dK", pmc.WorkingSetSize/);
m_listctrl.SetItemText(i,,str);
}
}
i++;
}
while(Process32Next(hSnapshot, &pe));
CloseHandle(hSnapshot);
}

2. CListCtrl控件

  控件用法参考:http://www.cnblogs.com/lidabo/archive/2012/08/23/2652786.html

  直接拖一个List control到界面, 然后需要在属性中设置:

  View选项为Report模式。

  添加一个控件变量CListCtrl m_listctrl;

  初始化时在OnInitDialog()中添加:

char *tab[] = {"进程名称", "PID", "线程数", "父进程ID", "线程优先级", "内存使用"};

    for (int i = ; i < ; i++)
{
//LVCFMT_RIGHT表示文字右对齐,60为列宽
m_listctrl.InsertColumn(i, tab[i], LVCFMT_RIGHT, );
}
//设置 进程名称 列宽
m_listctrl.SetColumnWidth(, );
m_listctrl.SetColumnWidth(, );
m_listctrl.SetColumnWidth(, );
m_listctrl.SetColumnWidth(, ); //设置扩展样式为全行选取,网格,复选框
m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);

  默认是单列选取,而且除了第一列可以选,其他都不可以选, 默认没有网格,没有复选框,通过设置扩展样式修改。

获取windows进程信息及CListCtrl控件(List Control)练习的更多相关文章

  1. 【VS开发】CListCtrl控件使用

    为何调用了CListCtrl的InsertColumn却什么效果都没有?这个问题以前发现过,今天才清楚,那就是要把它的Style指定为LVS_REPORT.       具体做法如下:       假 ...

  2. CListCtrl控件使用方法总结

    今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下: 以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtr ...

  3. VC的CListCtrl控件

    1. CListCtrl 样式及设置 2. 扩展样式设置 3. 数据插入 4. 一直选中Item 5. 选中和取消选中Item 6. 得到CListCtrl中所有行的checkbox的状态 7. 得到 ...

  4. 【VS开发】CListCtrl控件使用方法总结

    CListCtrl控件使用方法总结 今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下: 以下未经说明,listctrl默认view 风格为report 相关类 ...

  5. MFC实现 自适应操作系统的CListCtrl控件

    新建对话框应用程序,删除自动生成的控件后,拖拽一个CListCtrl控件,绑定变量名为:m_listctrl.在对话框初始化成员函数OnInitDialog()中键入以下代码即可实现自适应系统的CLi ...

  6. 重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree

    原文:重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree [源码下载] 重新想象 ...

  7. 重新想象 Windows 8 Store Apps (15) - 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState, VisualStateManager

    原文:重新想象 Windows 8 Store Apps (15) - 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState ...

  8. 【VS开发】关于在CFormView中实现CListCtrl控件的注意事项

    [VS开发]关于在CFormView中实现CListCtrl控件的注意事项 标签(空格分隔): [VS开发] 今天调试中发现了一项非常令人恼怒的事情,本来早都知道在CFormView中没有了像在对话框 ...

  9. [转载]CTreeCtrl 和 CListCtrl 控件(VC_MFC)

    来源:http://www.cnblogs.com/kzloser/archive/2012/11/23/2783305.html Tree Control 控件(MSDN 链接) 说明: 树形控件是 ...

随机推荐

  1. 获得数据源和路径desc.catalogPath

    workspace:C:\Users\dell\Documents\ArcGIS\Default.gdb\ddf inPath:c:\users\dell\documents\arcgis\defau ...

  2. hey is a tiny program that sends some load to a web application.

    hey is a tiny program that sends some load to a web application. DOS attack DOS攻击生成 https://github.c ...

  3. Maven setting.xml简易配置

    使用国内阿里云的下载源: <?xml version="1.0" encoding="UTF-8"?> <settings> <l ...

  4. selenium3 web自动化测试框架 二:页面基础操作、元素定位方法封装、页面操作方法封装

    学习目的: 掌握自动化框架中需要的一些基础web操作 正式步骤: 使用title_contains检查页面是否正确 # -*- coding:utf-8 -*- import time from se ...

  5. java面试考点-HashTable/HashMap/ConcurrentHashMap

    HashTable 内部数据结构是数组+链表,键值对不允许为null,线程安全,但是锁是整表锁,性能较差/效率低 HashMap 结构同HashTable,键值对允许为null,线程不安全, 默认初始 ...

  6. 常用的linux命令选项

    -a 显示所有对象 -c 生成一个计数 -d 制定一个目录 -e 扩展一个对象 -f 指定读入数据的文件 -h 显示命令的帮助信息 -i 忽略文本大小写 -l 产生输出的成格式版本 -n 使用非交互模 ...

  7. 分布式消息通信之RabbitMQ_01

    目录 官网 1. RabbitMQ安装 1.1 Window版安装 1.2 Linux版安装 2. 典型应用场景 3. 基本介绍 3.1 AMQP协议 3.2 RabbitMQ的特性 3.3 工作模型 ...

  8. Qt5."Clang Code Model"一些设置

    1.有些设置 可能这里在设置了,到别的地方(例如换了一个机子) 又要设置,这样的话 在不熟练的时候 手动敲进去会比较慢,这里 先记录下来 以后要用 直接复制就行了 2.Qt5.9.8 vs2017 : ...

  9. [转载]由浅入深探究mysql索引结构原理、性能分析与优化

    第一部分:基础知识第二部分:MYISAM和INNODB索引结构1. 简单介绍B-tree B+ tree树 2. MyisAM索引结构 3. Annode索引结构 4. MyisAM索引与InnoDB ...

  10. 消息队列系列:Rabbitmq Trace 日志的使用

    一.什么是Trace       Trace是Rabbitmq用于记录每一次发送的消息,方便使用Rabbitmq的开发者调试.排错.可通过插件形式       提供可视化界面   二.Trace实现概 ...