Как выполнить EXE-файл и вполне успешно в Ruby - PullRequest
0 голосов
/ 09 августа 2010

Пока что я хочу запустить exe-файл с моего диска, после завершения установки этого exe-файла отобразится всплывающее сообщение, сообщающее пользователю, что файл exe-файла уже завершен, но я не знаю, как закрыть всплывающее сообщение. .

Кто-нибудь знает, как это сделать?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 09 августа 2010

Я предполагаю, что у вас есть скрипт ruby, который запускает программу установки EXE (с помощью вызова system или аналогичного), и программа установки открывает всплывающее сообщение, которое не может быть подавлено, и запрещает сценарию продолжать .

Если это так, то вы можете использовать ruby ​​ Win32 API для вызова таких функций, как EnumWindows и CloseWindow . Конечно, их нужно будет запускать одновременно с установщиком (но, возможно, обязательно в отдельном процессе, в зависимости от деталей реализации потоков в ruby ​​/ win32), и ему нужно знать, как определить правильное окно сообщения, прежде чем пытаться закрыть его. .

Вот как я могу это взломать. Напишите отдельную программу с именем «CloseMsgBox.exe», которая принимает один аргумент командной строки, который является заголовком MessageBox, который он закрывает; программа будет периодически вызывать EnumWindows с функцией обратного вызова, которая вызывает GetWindowText , пока не найдет целевой заголовок и не закроет окно через CloseWindow. Внешний сценарий Ruby сначала запускает эту программу в отдельном потоке через вызов system (или popen и т. Д.), А затем exec установщик. Как только установщик откроет окно сообщения, программа CloseMsgBox закроет его, поэтому установщик завершит работу, закроет CloseMsgBox и завершит работу внешнего сценария Ruby.

0 голосов
/ 09 августа 2010

Некоторые установщики в Windows имеют тихий режим флаг запуска, поэтому они не отображают всплывающие окна во время установки. Однако этот параметр зависит от типа установочного пакета.

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