windows下qt获取所有桌面窗口所属类名和标题

新建一个Qt Widgets Application
mainwindow.cpp如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <Windows.h>
#pragma comment  (lib, "User32.lib")
char m_Name[MAXBYTE];
char m_Title[MAXBYTE];
WORD m_nNum;
BOOL CALLBACK enumAllWindow(HWND Hwnd, LPARAM IParm)//系统返还给你的窗口句柄,API调用进来的参数
{
    
    
    //每次Hwnd返回回来,都需要获取他的类名和标题
    GetClassNameA(Hwnd,m_Name,MAXBYTE);//获得指定窗口所属的类的类名
    GetWindowTextA(Hwnd,m_Title,MAXBYTE);//查找标题
    m_nNum++;
    QString strName = QString::fromLocal8Bit(m_Name);
    QString strTitle = QString::fromLocal8Bit(m_Title);    
    qDebug()<<"ID:"<<m_nNum<<"窗口句柄:"<<Hwnd<<"窗口类名:"<<strName<<"窗口标题:"<<strTitle;
//    return false;//枚举一次就不枚举了
    return true;//枚举到完毕
}

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);
    m_nNum = 0;
    EnumWindows(enumAllWindow,(LPARAM)"");
}

MainWindow::~MainWindow()
{
    
    
    delete ui;
}

运行结果:
在这里插入图片描述

おすすめ

転載: blog.csdn.net/weixin_43935474/article/details/116651945