Есть ли способ управления сторонним EXE-файлом из VB.NET? - PullRequest
2 голосов
/ 05 марта 2010

Моя цель - управлять приложением из VB.NET . Нет API, и у меня нет исходного кода, только скомпилированный EXE-файл. Есть ли способ найти открытое приложение, найти кнопку в приложении, нажать кнопку и узнать, что она была нажата? Есть ли способ прочитать содержимое текстового поля в приложении?

Ответы [ 3 ]

5 голосов
/ 05 марта 2010

Да, в Windows Vista (или Windows 7, или Windows Server 2003 и более поздних версиях) есть API-интерфейсы UI Automation .

Есть управляемые опции; System.Windows.Automation - это единица, поставляемая с .NET 3.0 как часть WPF ... Хотя System.Windows.Automation поставлялась как часть WPF, она не требует, чтобы целевое приложение использует WPF.

Вы можете прочитать больше:

1 голос
/ 05 марта 2010

Да, вы можете, но сначала может быть проще использовать ' AutoIt ' в качестве сценария прототипирования, чтобы сначала найти приложение.Ищите дескриптор окна этого приложения, перечисляйте через дочерние элементы управления этого окна, ищите конкретное текстовое поле и кнопку ... как только прототип AutoIt сработает, затем погрузитесь в реальное кодирование и можно будет использовать P / Invoke для перечисления и поиска окон, получения их ручек и выполнения автоматизации на них ...

Посмотрите на пример в C # из публикации Stack Overflow При вызове SendMessage (P / Invoke) происходит сбой .ОП пытался получить доступ к стороннему оконному приложению, чтобы извлечь тексты и использовать эти тексты в своей программе ... обратите внимание, как в данной ссылке «FindWindow» использовался для перебора дочерних окон окна основного процесса.

0 голосов
/ 05 марта 2010

Да, но вам придется прибегнуть к использованию собственных вызовов API, таких как, например, EnumWindows и EnumChildWindows. Взгляните на Как перечислить Windows с помощью Win32 API . Это для Visual Basic 6.0, но концепция та же.

...