目录

基本概念

代码与实例

源码下载


基本概念

知识点如下:

CreateToolhelp32Snapshot    获取当前系统进程快照

void Thread::getSnapshot()
{HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);if(!hProcess){qDebug() << "CreateToolhelp32Snapshot failed!";return;}PROCESSENTRY32 info;info.dwSize = sizeof(PROCESSENTRY32);if(!Process32First(hProcess, &info)){qDebug() << "Process32First null";return;}bool haveNext = true;while(haveNext){haveNext = Process32Next(hProcess, &info);if(haveNext){HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, info.th32ProcessID);insertInfo(QString::number(info.th32ProcessID), QString::number(info.cntUsage),QString::number(info.th32ParentProcessID), QString::number(info.pcPriClassBase),QString::number((DWORD)hProcess), QString::fromWCharArray(info.szExeFile));//            qDebug() << info.th32ProcessID << "  " << info.pcPriClassBase << "  " << QString::fromWCharArray(info.szExeFile) << "  " << hProcess;}}
//    qDebug() << "Over!";
}

通过此方式获取当前系统的进程信息

另外一个是关于QTableWidget相关设置:

    QStringList headList;headList << "进程ID" << "     进程名     " << "父类进程ID" << "进程句柄" << "优先级";ui->tableWidget->setColumnCount(5);ui->tableWidget->setHorizontalHeaderLabels(headList);
//    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);ui->tableWidget->setColumnWidth(1, 150);ui->tableWidget->horizontalHeader()->setStretchLastSection(true);ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);ui->tableWidget->setShowGrid(false);

设置表头数据,以及最后一列填充,以及不可编辑,以及设置每一项Stretch

代码与实例

程序运行截图如下:

上面那有一部分关键代码。

下面给出补充的关键代码:

#include "widget.h"
#include "ui_widget.h"
#include "thread.h"
#include <QDebug>
#include <QTableWidgetItem>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);m_thread = new Thread;QStringList headList;headList << "进程ID" << "     进程名     " << "父类进程ID" << "进程句柄" << "优先级";ui->tableWidget->setColumnCount(5);ui->tableWidget->setHorizontalHeaderLabels(headList);
//    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);ui->tableWidget->setColumnWidth(1, 150);ui->tableWidget->horizontalHeader()->setStretchLastSection(true);ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);ui->tableWidget->setShowGrid(false);startTimer(1000);
}Widget::~Widget()
{delete ui;delete m_thread;
}void Widget::addNew()
{QVector<ProcessInfo> vec = m_thread->getVec();for(ProcessInfo info : vec){bool have = false;for(int i = 0; i < ui->tableWidget->rowCount(); i++){if(ui->tableWidget->item(i, 0)->text() == info.processID){have = true;}}if(!have){ui->tableWidget->insertRow(0);ui->tableWidget->setItem(0, 0, new QTableWidgetItem(info.processID));ui->tableWidget->setItem(0, 1, new QTableWidgetItem(info.processName));ui->tableWidget->setItem(0, 2, new QTableWidgetItem(info.parentProcessID));ui->tableWidget->setItem(0, 3, new QTableWidgetItem(info.processHandle));ui->tableWidget->setItem(0, 4, new QTableWidgetItem(info.processPri));}}
}void Widget::removeOld()
{QVector<ProcessInfo> vec = m_thread->getVec();for(int i = 0; i < ui->tableWidget->rowCount(); i++){bool have = false;for(ProcessInfo info : vec){if(info.processID == ui->tableWidget->item(i, 0)->text()){have = true;continue;}}if(!have){ui->tableWidget->removeRow(i);}}
}void Widget::timerEvent(QTimerEvent *event)
{Q_UNUSED(event)m_thread->clearVec();m_thread->getSnapshot();addNew();removeOld();
}

源码下载

打包下载地址:https://github.com/fengfanchen/Qt/tree/master/ProcessList

Qt笔记-获取Windows下目前运行的进程信息相关推荐

  1. QT程序在windows下部署发布

    转载:http://www.cnblogs.com/Fan_Fan/archive/2010/05/29/1746860.html QT程序在windows下部署发布 以下包括了部分网上收集的,以及q ...

  2. Windows下后台运行Python程序,并终止特定程序

    Windows以后台方式运行Python程序 Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c start.ba ...

  3. Windows 下直接运行 Linux的Live CD版的方法

    Windows 下直接运行 Linux的Live CD版的方法 一个偶然的机会,我发现.Live CD 版的Linux可以借助 qume在Windows下直接运行;方法是下载linux-tr127 下 ...

  4. linux32位运行64位程序,32位windows下可以运行的程序在64位linux下报错

    已结贴√ 问题点数:20 回复次数:3 32位windows下可以运行的程序在64位linux下报错 filt.c在32位windows code:blocks 10.05下运行无任何异样. 传到64 ...

  5. 基于Qt Creator 的Windows下数字图像处理软件[栏目]

    基于Qt Creator 的Windows下数字图像处理软件[栏目] 前言 设计过程 完整项目展示 前言 之前说准备转行软件开发,准备从C++的学习开始,恰好这学期的数字图像处理需要做一个项目,所以决 ...

  6. Python3获取Windows下Chrome 90版本的Cookie值

    Python3获取Windows下Chrome 90版本的Cookie值 文章目录 Python3获取Windows下Chrome 90版本的Cookie值 前言 一.AES_GSM加密方式 二.DP ...

  7. windows下jenkins运行jar包的命令

    windows下jenkins运行jar包的命令 @echo off setlocal enabledelayedexpansion :: 设置服务启动的端口 set port=9098 :: 根据端 ...

  8. Golang获取目录下的文件及目录信息

    一.获取当前目录下的文件或目录信息(不包含多级子目录) func main() {pwd,_ := os.Getwd()//获取文件或目录相关信息fileInfoList,err := ioutil. ...

  9. WMI技术介绍和应用——查询正在运行的进程信息

    在<WMI技术介绍和应用--使用VC编写一个半同步查询WMI服务的类>一文中,我们介绍到了一个半同步查询WMI类的框架.本文将是该技术的一个应用,介绍如何使用WMI技术查询正在运行的进程信 ...

最新文章

  1. ASP.NET Web 项目文件类型
  2. AtCoder AGC031D A Sequence of Permutations (群论、置换快速幂)
  3. idea调试debug技巧_这几个IDEA高级调试技巧,用了都说好!
  4. iOS经典面试题之深入解析类Class的iskindOfClass与isMemberOfClass的底层原理
  5. IBM T410 打开AHCI模式
  6. macOS的控制台Console.app
  7. 图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波
  8. Hive with as语法
  9. SQL Server 2005全文索引(full text search)
  10. 故障集——user is currently used(无法删除用户)
  11. windows下pyqt4
  12. 中国世界500强数量首超美国,但别高兴得太早
  13. 强化学习综述(机器学习角度)
  14. 干货 | 互联网广告数据的匿名化方案研究
  15. 自动控制原理第4章——根轨迹法(思维导图)
  16. Row Migration和row chained
  17. GNU Radio3.8创建OOT的详细过程(基础/C++)
  18. selenium 反爬虫之跳过淘宝滑块验证!首先要搞定JS!
  19. 龙芯+QtCreator+神通数据库+中标麒麟操作系统
  20. 六级考研单词之路-五十二

热门文章

  1. 转:iOS应用程序生命周期(前后台切换,应用的各种状态)详解
  2. 《0bug-C/C++商用工程之道》节选00--内存管理的基本要求
  3. 管理成本降低10%,且看制造企业如何打造“智慧供应链”
  4. 为什么我不建议产品经理硬“抄”别人的用户画像?
  5. 面试想拿 10K,HR 说你只值 7K,该怎样回答或者反驳?看看这位老前辈怎么说
  6. ZSKAME大白菜2013官网下载
  7. 百度声明:从未答应屏蔽三鹿负面
  8. 男人“杀”死女人的30句话
  9. VC实现动画应用两则
  10. 996,别让年轻人累到不觉得累