Ruby & win23ole: Как закрыть окно, запущенное с помощью shell.ShellExecute - PullRequest
1 голос
/ 24 января 2012

Я использую приведенный ниже код для запуска сервера.Есть ли простой способ выйти из этого окна, не проходя путь поиска pid и не используя 'taskkill'?Я имею в виду, в конце концов, у меня есть дескриптор в переменной 'shell', не так ли?

shell = WIN32OLE.new('Shell.Application')
shell.ShellExecute("run_app_server.bat")

С приведенным выше кодом появляется окно с запущенным сервером.Теперь я также хочу выйти из кода.

Спасибо

1 Ответ

1 голос
/ 25 января 2012

Ну, у вас есть ссылка на ole автоматизацию Объект оболочки , но как только вы используете ShellExecute для запуска процесса в своем собственном окне, этот процесс принадлежит Windows, и я не верю, что он отображается вв любом случае через объект автоматизации оболочки - поэтому нет способа использовать ссылку на объект для его завершения.

Вместо того, чтобы использовать Taskkill из оболочки, вы также можете выполнять поиск и уничтожение с помощью автоматизации, как вы ».Вы делаете сейчас - может быть, адаптировать или "перевести" этот сценарий Perl, который делает это .

...