C # Автоматизация процессов - PullRequest
2 голосов
/ 04 октября 2011

Я запускаю внешнее приложение с System.Diagnostics.Process, этот внешний процесс в один момент открывает диалоговое окно, в котором пользователь вводит что-то, а затем нажимает кнопку ОК. Что мне нужно, так это подождать с моим приложением (тем, где я запустил внешний процесс), пока пользователь не вставит что-то и не нажмет OK. После этого я должен выполнить еще одну задачу для этого внешнего процесса, а затем закрыть его.

Ответы [ 3 ]

1 голос
/ 04 октября 2011

Это возможно, но за этим стоит некоторая работа. Сначала вам нужно запустить свой код как неуправляемый код, так как вам нужно будет подключать события ОС Windows с Win32 API.

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

1 голос
/ 04 октября 2011

Да, это возможно. Есть несколько способов получить информацию об окне, начиная с дескриптора процесса и / или ID. См. вопрос и ответы для начала работы. Скорее всего, вы в конечном итоге будете использовать P / Invoke для Win32 API, чтобы добиться этого, но есть десятки хороших примеров для достижения этой цели.

Получив дескриптор окна, вы можете использовать схему опроса таймера, чтобы проверить наличие или, в вашем случае, наличие, а затем исчезновение окна.

0 голосов
/ 04 октября 2011

Если приложение, которое вы запускаете, существует после того, как пользователь взаимодействует с диалоговым окном, вы можете просто позвонить Process.WaitFroExit(), и ваш код не будет продолжаться до тех пор, пока процесс, который вы запустили, не завершится.

несколько полезных функций для взаимодействия с процессами в классе System.Diagnostics.Process (который, я полагаю, вы используете для запуска этого внешнего приложения)

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