【发布时间】:2019-07-23 06:04:00
【问题描述】:
我正在学习编程,但在 Qt/Windows 中查找位置和分辨率数据时遇到了麻烦。我有可以做到这一点的 c++ 函数。
这是我正在使用的 Qt 代码
void Edge_Window::on_pushButton_getInfo_6_clicked()
{
HWND h = FindWindow(NULL, TEXT("Edge Organizer"));
LPRECT rct;
GetWindowRect(h, rct);
qDebug() << "X = " << rct->left;
qDebug() << "Y = " << rct->top;
qDebug() << "Width = " << rct->right - rct->left;
qDebug() << "Height = " << rct->bottom - rct->top;
}
不幸的是,我从调试中得到的唯一答案是:
X = 1693732235
Y = 3465
Width = 644133493
Height = 79843420
无论我的屏幕位于何处,这都是响应。我试过GetForegroundWindow(),但它只是崩溃了。我的目标是获取标题、类、坐标和分辨率等信息,并能够在 Windows 中的外部程序上设置它们。
【问题讨论】:
-
你在
FindWindow()函数调用后检查HWND h的值是多少?它可以为 NULL(未找到 windows),因此您的矩形将无法正确初始化。 -
我收到 0x2350a8a 的值,每次我重新启动程序时都会发生变化,所以我会假设发生了某种通信
-
Qt 似乎是一个阅读鲱鱼。您仅使用 Win32 界面。这是正确的,当然。你不知道另一个窗口是否是用 Qt 制作的,只是它是一个 Win32 窗口。