QT中外部窗口的X,Y,W,H

时间:2019-03-01 08:28:42

标签: c++ qt winapi

我正在学习编程,在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的外部程序中进行设置。

1 个答案:

答案 0 :(得分:0)

在您的代码rct中,是指向RECT的未初始化指针

您想要这个:

RECT rct;
GetWindowRect(h, &rct);

由于rct不再是指针,而是RECT,因此您还需要将所有rct->xxx更改为rct.xxx

您的原始代码与此等效:

RECT *rct;   // now it's a bit more obvious that rct is an uninitialized pointer
GetWindowRect(h, rct);