Взаимодействие с другими приложениями (например, нажатием кнопки) - PullRequest
3 голосов
/ 20 июня 2011

Я пытаюсь автоматизировать многие повторяющиеся задачи на работе, и эта небольшая проблема поставила меня в тупик.

Мы используем приложение для распечатки этикеток для онлайн-заказов, процесс такой:

  1. Нажмите на заказ
  2. Проверьте детали заказа и нажмите «Завершить»
  3. 5 секунд после расчета программы
  4. Подтвердите, чтоВы хотите напечатать этикетку
  5. Печать этикеток, и все готово

В напряженные дни мы должны пройти этот процесс для более чем 500 заказов, потому что эта задача потребляет много бесполезныхвремя из-за шага 3. Пользователь должен подождать эти 5 секунд, прежде чем сможет нажать кнопку «Печать».Скажем, у нас 500 заказов, это 500 раз 5 секунд, это около 40 минут.Весь процесс отправки занимает 2 часа, поэтому 33% времени теряется из-за людей, ожидающих нажатия кнопки.

Я пытаюсь найти способ автоматизации шага 4, чтобы пользователи могли прекратить взаимодействие сприложение после выполнения шага 2.

Так есть ли способ использовать C # для нажатия кнопки в другой форме из другого приложения? Событие должно сработать, когда появится экран подтверждения.Обратите внимание, что этот экран подтверждения - это не диалоговое окно печати окон по умолчанию, а часть приложения, поэтому не мешайте настройкам.

Ответы [ 3 ]

5 голосов
/ 20 июня 2011

Я думаю, вы должны смотреть на инструменты сценариев пользовательского интерфейса, такие как AutoIt и AutoHotkey вместо того, чтобы писать свои собственные.

1 голос
/ 20 июня 2011
0 голосов
/ 20 июня 2011

Вы можете нажать кнопку в форме с помощью User32 dll, если вы знаете дескриптор формы.

Я использую PInvoke.net для поиска методов

Чтобы определить, открывался / закрывался экран, можно создать хук для окон, который срабатывает при открытии или закрытии экрана.Вам понадобится библиотека C ++, чтобы сделать это, поскольку это невозможно в c #, но вам нужно только создать небольшую сборку C ++, а затем ссылаться на нее из вашего c #.Вы можете проверить заголовок окна, когда оно открывается, чтобы увидеть, является ли оно нужным, затем вы можете получить дескриптор окна и посмотреть, когда оно закрывается.

Некоторую информацию о том, как реализовать хуки, можно найти здесь..

http://www.voidnish.com/Articles/ShowArticle.aspx?code=manipwindows

Однажды использованная мной сборка C ++ называется GlobalCBTHook.

Вот еще одна ссылка из проекта кода, в которой показаны глобальные оконные перехватчики

http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx

Ссылка, приведенная выше, подтолкнула меня к началу

...