Наверное, хорошо понять, почему не существует простого способа. Все сводится к « какому окну?». Скорее всего, прямо сейчас на вашем экране будет видно несколько окон. Например, панель задач внизу экрана - это окно. даже ваше собственное приложение обычно имеет более одного. Например, диалоговое окно «Сохранить файл» является окном. Даже простой MessageBox
- это окно.
Итак, как определить о каком окне вы говорите? Общий ответ таков: вы идентифицируете их по HWND
. Таким образом, чтобы получить позицию диалогового окна «Сохранить файл», вы запрашиваете позицию, связанную с этим HWND. Очевидно, что таким способом вы можете получить любое свойство, , кроме самого HWND
! Имеет смысл задать X / Y позицию HWND(0x5e21)
, но глупо спрашивать, какой HWND
принадлежит HWND(0x5e21)
.
Теперь может случиться, что у вас есть другое более или менее уникальное свойство, и вы хотите получить HWND
от этого. Например, у вас может быть позиция X / Y. В этом случае WindowFromPoint(xy)
вернет HWND
в этой позиции.
Но наиболее распространенным случаем является то, что вам нужно реагировать на сообщение Windows для вашего окна. В этом случае вы получите HWND
вашего окна в качестве первого аргумента вашего WindowProc()
.
Таким образом, если вы не сообщите нам, какой уникальной информацией вы обладаете, мы не сможем рассказать вам, как найти соответствующий HWND
.