В Visual Basic я создаю объект приложения и запустить его:Visual Basic: убийство процесса объекта Application
gApp = New CANoe.Application
gMeasurement = gApp.Measurement
gApp.Open(arrArgs(0), False, False)
gMeasurement.Start()
После того, как приложение завершит обработку данных, два возможных сценария может произойти следующее: (я) данные файл был поврежден и (в обычных обстоятельствах) открывается окно allert и (ii) файл данных был в порядке. В (ii) случае я могу вполне подать заявку с gApp.Quit()
. Однако в случае (i) gApp.Quit()
не работает, так как программа ожидает ввода от пользователя (хотя часто я вообще не вижу окна).
Вопрос 1: Как я могу выполнить процесс, соответствующий gApp? В настоящее время я помнюсь это таким образом:
For Each p As Process In Process.GetProcesses
If p.ProcessName = "CANoe32" Then
p.Kill()
End If
Next
В целом это плохое решение, так как более экземпляры CANoe32 могут работать (хотя в данном случае только один процесс этого двоичного файла может работать в системе).
Вопрос 2 Что было бы более элегантным решением для выхода из gApp на случай, если у него есть дочерние окна?
Любые комментарии очень полезны
Если данная программа не отвечает на запросы (из-за ожидает ввода от пользователь), единственное, что вы можете сделать, это убить его (как вы это делаете). Что касается дочерних окон, то они управляются самой внешней программой и, таким образом, будут закрыты, когда основная программа будет закрыта. – varocarbas
@varocarbas: Большое спасибо за комментарий. Насколько сложно было бы проверить погоду, есть детские окна? Можно ли получить соответствующий «Процесс» «Прикладного» nicer (без проверки всего списка процессов системы? – arthur
Невозможно дать общий ответ на этот вопрос. Как сказано, дочерние окна управляются посредством целевое приложение и, следовательно, их поведение определяется им. Вы можете управлять дочерними окнами через процесс только в том случае, если целевое приложение создает новый процесс для дочернего окна (пример: Excel с разными экземплярами, которые вы открываете), в противном случае вы можете получить к ним доступ через gApp (если это разрешено). Таким образом, для такого рода вещей у вас есть два варианта: либо просить кого-то, кто имеет опыт работы в этом конкретном приложении, либо сделать пробную пробную версию/тестирование. – varocarbas