搜索名称包含某个字符串的windows窗口,获取其窗口句柄 的Qt 代码
时间: 2023-12-10 18:37:02 浏览: 105
你可以使用 Qt 的 QGuiApplication 和 QScreen 类来获取当前屏幕上所有窗口的句柄,然后使用 Windows API 中的 FindWindowEx 函数来查找符合条件的窗口句柄。
以下是一个示例代码,可以搜索窗口标题中包含 "Notepad" 字符串的窗口,并获取其窗口句柄:
```cpp
#include <QGuiApplication>
#include <QScreen>
#include <Windows.h>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
// 获取当前屏幕上所有窗口的句柄
QList<QScreen*> screens = QGuiApplication::screens();
QList<HWND> windowHandles;
foreach (QScreen* screen, screens) {
windowHandles += reinterpret_cast<HWND>(screen->winId());
}
// 查找标题包含 "Notepad" 的窗口句柄
HWND notepadHandle = nullptr;
foreach (HWND handle, windowHandles) {
char title[1024];
GetWindowTextA(handle, title, sizeof(title));
if (strstr(title, "Notepad") != nullptr) {
notepadHandle = handle;
break;
}
}
// 如果找到了符合条件的窗口句柄,则可以在此进行操作
if (notepadHandle != nullptr) {
// ...
}
return app.exec();
}
```
需要注意的是,此方法只能在 Windows 平台上使用,因为它使用了 Windows API 中的函数。
阅读全文