X, Y, W, H внешнего окна в QT - PullRequest
0 голосов
/ 01 марта 2019

Я учусь программировать, и у меня возникают проблемы с поиском данных о положении и разрешении в 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 голосов
/ 01 марта 2019

В вашем коде 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...