qt 当前窗口句柄_QT获取Windows系统所有窗口句柄
时间: 2023-07-16 21:14:05 浏览: 79
在 Qt 中,可以使用 QWindow::winId() 函数获取当前窗口的句柄。如果需要获取 Windows 系统中的所有窗口句柄,可以使用 Windows API 中的 EnumWindows() 函数。
以下是一个示例代码,演示如何在 Qt 中获取 Windows 系统中所有窗口的句柄:
```cpp
#include <QDebug>
#include <QWindow>
#include <windows.h>
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
QList<HWND>* windowList = reinterpret_cast<QList<HWND>*>(lParam);
windowList->append(hwnd);
return TRUE;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 获取当前窗口句柄
HWND currentHandle = reinterpret_cast<HWND>(QApplication::activeWindow()->winId());
qDebug() << "Current window handle: " << currentHandle;
// 获取所有窗口句柄
QList<HWND> windowList;
EnumWindows(EnumWindowsProc, reinterpret_cast<LPARAM>(&windowList));
qDebug() << "Total number of windows: " << windowList.size();
return a.exec();
}
```
该程序首先使用 QApplication::activeWindow()->winId() 函数获取当前窗口的句柄,然后使用 EnumWindows() 函数获取 Windows 系统中所有窗口的句柄,并将其存储在一个 QList<HWND> 对象中。最后,程序输出当前窗口句柄和总窗口数。