Какой самый простой способ найти данный элемент управления в окне внешней программы? - PullRequest
0 голосов
/ 22 августа 2010

Как лучше всего, используя WinApi, найти заданный элемент управления во внешнем окне программы?

Например, я пытаюсь изменить текстовое поле URL Internet Explorer.У меня проблемы с получением программно ручки для текстового поля.Я знаю, что его типом является «Правка», но я бы хотел избежать поиска во всех дочерних окнах элемента управления «Правка» (так я сейчас и поступаю).уникальный идентификатор для данного элемента управления в окне?Я пытался использовать "Control ID", но он не работает.

Спасибо

Ответы [ 2 ]

2 голосов
/ 22 августа 2010

Когда вы углубляетесь в окна другого приложения, которое не предназначено для того, чтобы дать вам какой-то особенный доступ к его окнам, тогда у вас нет простого решения.Такие функции, как FindWindowEx , GetWindow , EnumChildWindows и остальные - вот с чем вам нужно работать.

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

В некоторых случаях вам может быть полезно выяснить, существуют ли альтернативные и более официальные способы управления другой программой.Например, Internet Explorer предоставляет COM-объект , который можно использовать для многих целей.Поскольку это официальный интерфейс, у вас есть лучшие гарантии относительно того, на каких предыдущих версиях он будет поддерживаться, и что он не сломается для будущих версий.

1 голос
/ 22 августа 2010

Лучший способ сделать это - найти его шаг за шагом. Найдите окно IE с FindWindow, затем найдите его потомок с FindWindowEx, затем найдите его потомок с FindWindowEx ..., пока не дойдете до текстового поля.

Есть одна программа, о которой я могу подумать, которая будет генерировать код VB путем перетаскивания значка из приложения в любую часть любого другого приложения. VB устарел, но даст вам очень хорошую идею, как это сделать !

Он называется API Spy и находится в разделе «Загружаемые приложения (только для Windows)» на http://patorjk.com/blog/software/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...