首页 > 系统服务 > 详细

qt 取进程列表

时间:2020-05-08 10:59:40      阅读:315      评论:0      收藏:0      [点我收藏+]
  1. 导入库 pro
win32:LIBS += -lpsapi
win32:LIBS += -lkernel32
  1. 获取列表
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <windows.h>
#include <QtDebug>
#include <locale>
#include <tchar.h>
#include <string>
#include <QMessageBox>
#include <stdio.h>
#include <psapi.h>

void MainWindow::on_pushButton_2_clicked()
{
    // 获取进程标识符列表。
    DWORD aProcesses[1024], cbNeeded;

    if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded))
    {
        qDebug() << "获取失败";
        return;
    }

    // 计算返回了多少个进程标识符。
    unsigned int cProcesses = cbNeeded / sizeof(DWORD);

    // 打印每个进程的名称和进程标识符。
    unsigned int i;
    for ( i = 0; i < cProcesses; i++ )
    {
        DWORD processID = aProcesses[i];
        if(processID == 0 ) continue;


        char buff[255];
        // 打开现有的本地过程对象
        HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |PROCESS_VM_READ,FALSE, processID );
        if(hProcess == NULL)continue;

        // 获取进程名称。
        HMODULE hMod;
        DWORD cbNeeded;

        if (EnumProcessModules(hProcess, &hMod, sizeof(hMod),&cbNeeded) )
        {
            GetModuleBaseNameA(hProcess, hMod, (LPSTR)&buff, DWORD(sizeof(buff)/sizeof(char)));
        }

        QString s= QString::fromLocal8Bit(buff);
        qDebug() << "PID: " << processID << ", name: " << s;


        // 释放该过程的句柄。
        CloseHandle( hProcess );
    }
}

参考:

qt 取进程列表

原文:https://www.cnblogs.com/ajanuw/p/12849022.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!