现在,我想从我的磁盘运行exe文件,完成安装该exe文件后,将显示一个弹出消息告诉用户已完成安装exe文件,但我不知道如何关闭弹出消息。如何执行exe文件,并在ruby中成功完成
有谁知道该怎么做?
非常感谢你
现在,我想从我的磁盘运行exe文件,完成安装该exe文件后,将显示一个弹出消息告诉用户已完成安装exe文件,但我不知道如何关闭弹出消息。如何执行exe文件,并在ruby中成功完成
有谁知道该怎么做?
非常感谢你
在Windows上安装一些有静音模式推出的标志,因此他们将不会显示在安装过程中的任何弹出窗口。但是,此选项取决于安装包的类型。
我假设你有一个运行EXE安装程序的ruby脚本(通过system
调用或类似的方式),然后安装程序打开一个弹出消息,该消息不能被取消并禁止脚本继续。
如果是这种情况,那么您可以使用ruby Win32 API来调用像EnumWindows和CloseWindow这样的函数。当然,它们必须同时运行到安装程序(但可能必须在单独的进程中,具体取决于ruby/win32线程的实现细节),并且它必须知道如何在尝试关闭它之前识别正确的消息框。
下面是我可能如何破解它。编写一个名为“CloseMsgBox.exe”的单独程序,该程序采用一个命令行参数,该参数是它将关闭的MessageBox的标题;程序会定期调用EnumWindows,并调用GetWindowText,直到找到目标标题并通过CloseWindow关闭窗口。外部的Ruby脚本首先通过调用system
(或popen
等)然后exec
安装程序在单独的线程中运行此程序。一旦安装程序打开消息框,CloseMsgBox程序将关闭它,因此安装程序将退出,CloseMsgBox将退出,外部Ruby脚本将退出。
CloseWinodw方法可以关闭,但参数是hwnd,你知道,hwnd会随时更改。 你能以其他方式给我吗? 我只是做exec(“gamexiu.exe”),然后想关闭弹出消息 – user414823 2010-08-09 08:57:46
这取决于如何以编程方式识别消息框窗口。 EnumWindows需要一个[回调函数](http://msdn.microsoft.com/en-us/library/ms633498%28v=VS.85%29.aspx),它将每个hWnd作为参数;例如,如果您知道消息框的标题,则可以使用[GetWindowText](http://msdn.microsoft.com/en-us/library/ms633520%28VS.85%29.aspx)选择正确的hWnd,然后调用CloseWindow。 – maerics 2010-08-09 11:15:51