2014-11-17 5 views
-3

Я пишу какое-то программное обеспечение для автоматизации. Я хочу иметь возможность отправлять сообщение определенному элементу управления. Я могу найти приложение, но мне нужен HWND элемента управления. Как я могу сказать, что мое программное обеспечение выбрало это редактирование здесь или этой кнопкой там, например? Я осмотрел несколько элементов управления с Spy ++, но я нашел никаких уникальных стойких свойств, см изображения ниже: enter image description here enter image description hereКак однозначно идентифицировать элемент управления в окне?

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

Что еще я мог сделать? Как решения для автоматизации автоматизации GUI решают эту задачу?

+0

http://msdn.microsoft.com/en-us/magazine/cc163617.aspx –

+0

@HansPassant Да, это полезная ссылка для .NET, и это поможет в моем случае. Но как насчет общего дела? – Mikhail

+0

@ HansPassant Еще больше, ни он, ни его современная вилка не работают над моим приложением, хотя это, очевидно, написано с помощью Windows Forms. – Mikhail

ответ

0

pywinauto механизм автоматизации может идентифицировать управление по индексу, например app.SomeDialog.ChildWindow(class_name='Button', ctrl_index=0).ClickInput(), который является стойким для каждого конкретного момента, если последовательность испытаний детерминирована. Также он позволяет более сложные критерии соответствия: app.SomeDialog.ChildWindow(title='&Next', class_name='Button', parent=SomeViewContol, predicate_func=SomeFunc).ClickInput().

+0

Спасибо, контрольный индекс - хорошая идея. Меня это не интересует, потому что я использую C++, а не Python. – Mikhail

+0

Я взглянул на pywinauto. Это так здорово, я все равно его использую, начиная с C++ через встраивание Python. Большое спасибо за ссылку! – Mikhail

+0

На всякий случай ... Если вам нужна 64-битная автоматизация приложений, 64-разрядная версия, совместимая с Python, находится здесь: https://github.com/vasily-v-ryabov/pywinauto-64 (для 32-битных приложений вы все еще нужен 32-разрядный Python). –

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