2016-06-24 2 views
-3

Интересно, есть ли способ каким-то образом взаимодействовать с окнами, которые в настоящее время открыты в системе Windows. Я заинтересован в получении некоторых из их свойств, а именно:Взаимодействие с окнами Windows программно

  • Расположение
  • Размер
  • в фоновом режиме?
  • возможно заголовок окна

Предпочтительно, я хотел бы сделать это в Java, но любые предложения приветствуются.

+1

См. [1] (http://stackoverflow.com/questions/ 6091531/how-to-get-the-x-and-y-of-a-program-window-in-java) [2] (http://stackoverflow.com/questions/11067484/get-titles-of- не-java-windows-in-java) [3] (http://stackoverflow.com/questions/31312793/why-does-my-call-to-winapi-getwindowplacement-fail-using-jna) – theB

ответ

1

A comment byB связано с хорошими ресурсами для Java. Я пройду через соответствующие API Windows, если вы захотите перейти на родной язык с C++.

Чтобы перечислить все окна верхнего уровня в системе, используйте EnumWindows. Вы даете ему функцию обратного вызова с сигнатурой EnumWindowsProc, поэтому он получит каждый дескриптор окна в качестве первого параметра.

Вы можете получить расположение окна (в координатах экрана) и размеры с помощью функции GetWindowRect. Пройдите в обработчик окна, который вы получили, и получите LPRECT (указатель на RECT).

Чтобы определить, максимально ли используется окно, используйте GetWindowPlacement и проверьте поле showCmd структуры, которую вы получите.

Наконец, чтобы получить заголовок окна, используйте GetWindowText. (В стороне, если вы хотите получить текст элемента управления в другом процессе, вам необходимо отправить сообщение WM_GETTEXT самостоятельно.)

Смежные вопросы