現在,我想從我的磁盤運行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