2013-08-07 6 views
1

В 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 на случай, если у него есть дочерние окна?

Любые комментарии очень полезны

+1

Если данная программа не отвечает на запросы (из-за ожидает ввода от пользователь), единственное, что вы можете сделать, это убить его (как вы это делаете). Что касается дочерних окон, то они управляются самой внешней программой и, таким образом, будут закрыты, когда основная программа будет закрыта. – varocarbas

+0

@varocarbas: Большое спасибо за комментарий. Насколько сложно было бы проверить погоду, есть детские окна? Можно ли получить соответствующий «Процесс» «Прикладного» nicer (без проверки всего списка процессов системы? – arthur

+0

Невозможно дать общий ответ на этот вопрос. Как сказано, дочерние окна управляются посредством целевое приложение и, следовательно, их поведение определяется им. Вы можете управлять дочерними окнами через процесс только в том случае, если целевое приложение создает новый процесс для дочернего окна (пример: Excel с разными экземплярами, которые вы открываете), в противном случае вы можете получить к ним доступ через gApp (если это разрешено). Таким образом, для такого рода вещей у вас есть два варианта: либо просить кого-то, кто имеет опыт работы в этом конкретном приложении, либо сделать пробную пробную версию/тестирование. – varocarbas

ответ

Смежные вопросы