автоматизация приложений .NET - PullRequest
1 голос
/ 12 сентября 2010

Я пытаюсь автоматизировать скрытое .NET приложение, используя другое приложение .NET (написанное на c #), используя самый простой способ.Это НЕ для целей тестирования, это способ восполнить отсутствие сценариев для этого приложения.

Я уже пробовал white framework, но с ним есть одна серьезная проблема: как он работает,Он работает медленно и не работает со скрытыми окнами и элементами управления (как это делает winAPI).Более того, когда «щелчок» по белому перемещает мышь, выводит целевое окно на передний план и т. Д.

Я также думал об использовании оболочки user32.dll, потому что способ обработки цели - это то, чтоМне нужно, но у меня есть красный, он не работает с приложениями .NET.Также было бы сложно работать с ним, потому что мое целевое приложение получило 5 кнопок с надписью «...», и было бы очень трудно найти 2 из них, которые мне нужны.Я также хотел бы использовать .NET id элементов управления (имя, которое разработчик дал своим элементам управления при разработке GUI).

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

Ответы [ 2 ]

2 голосов
/ 12 сентября 2010

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

Я никогда не пробовал такой подход, но он должен работать.

1 голос
/ 12 сентября 2010

Вы должны попробовать идею Стивенса вместо того, чтобы писать скрипты в скрытом приложении..NET Windows Forms App (EXE) по-прежнему является сборкой .NET, и это означает, что вы можете использовать это так же, как DLL, просто добавьте ссылку и используйте открытые классы.

Если вы все еще хотитепопробуйте некоторые сценарии, посмотрите на API-интерфейс Microsoft UI Automation и пространство имен System.Windows.Automation.

Хорошая статья здесь: http://msdn.microsoft.com/en-us/magazine/cc163465.aspx

MSDN Doc: http://msdn.microsoft.com/en-us/library/system.windows.automation.aspx

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