Ruby & win23ole: Как закрыть окно, запущенное с помощью shell.ShellExecute

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

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

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

Спасибо

1 ответ

Решение

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

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

Другие вопросы по тегам