C # - Поиск координат приложения Winform - PullRequest
3 голосов
/ 29 марта 2019

У меня есть простое приложение формы окна входа в систему, и я управляю этим приложением через адаптер, теперь я хочу найти координаты текстовых полей и кнопки, я попытался использовать координаты после щелчка правой кнопкой мыши по элементу управления текстовым полем и выбора местоположения изего собственность, но это не сработало.Поэтому я хочу найти правильное местоположение, так как размер формы приложения Windows может быть изменен во время выполнения.Итак, как я могу найти координаты формы окна.

Я пытался использовать координаты, указанные в свойствах текстового поля и кнопки управления, но они не работали.

IntPtr childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intFirstNameCoordX,intFirstNameCoordY));

Этокак я хочу найти окно.

Я хочу найти текстовое поле и положение кнопок в форме окна.Я гуглил и нашел какой-то инструмент Spy ++, но я не уверен, что это то, что мне нужно, и если это так, то кто-нибудь может подсказать мне, как я могу использовать его, чтобы найти позицию в простом приложении в форме окна.

1 Ответ

3 голосов
/ 29 марта 2019

Хорошо, я вижу, что вы используете функции WinApi, поэтому я не буду углубляться в это, просто дам вам некоторое представление.

Во-первых, вы можете получить дескриптор главного окна.Вы можете получить ручку по процессу (enum process windows) или по заголовку.Если вы хотите получить дескриптор по заголовку, вы можете использовать FindWindow

Этот дескриптор является дескриптором окна.Затем вы можете перечислить его дочерние окна - например, панели или другие элементы управления, используя EnumChildWindows

Теперь все остальное зависит от вашей архитектуры GUI.У вас могут быть правки и кнопки на панелях, поэтому вам придется искать дочерние окна этой панели.У вас могут быть элементы управления, просто помещенные в главное окно, поэтому вы просто ищете дочерние элементы управления этого окна.

Далее, когда вы найдете интересующий элемент управления, вы можете получить больше информации, используя дляпример GetWindowRect

...