我知道這個問題已被問到直接使用VB時,但我有麻煩終止一個進程。我使用的是win32ole和ruby 1.9的jruby版本。我當前的代碼是這樣的:win32ole過程仍然在ruby中運行
begin
excel = WIN32OLE::connect('excel.Application')
rescue
excel = WIN32OLE::new('excel.Application')
end
excel.Visible = 1
workbook = excel.Workbooks.Open("path to some doc")
ws = workbook.Worksheets(1)
ws.Select
cell_content = ws.Cells(4,4).Value
puts("#{cell_content}")
workbook.Close
cell_content = nil
ws = nil
workbook = nil
excel.ole_free
excel = nil
GC.start
我想簡單地打開Excel,得到的值並終止。但是當我查看任務管理器時,我仍然看到EXCEL.exe正在運行。由於開始營救,它也應該打開一個現有的exe,但每次運行它時,它都會啓動一個新的過程。一旦腳本停止手動關閉excel,但我也嘗試使用excel.Close。我是否需要調用Marshal.releaseComObject的ruby等價物?我沒有很多VB的經驗,而且我對Ruby很新,所以如果這是一個愚蠢的問題,我很抱歉,但是請提前致謝!
編輯: 我也嘗試過使用excel.quit和excel.Quit,對不起,我忘了提到這一點。似乎都沒有工作。
編輯2: 我在RubyMine的運行和使用Windows XP,使用寶石:JRuby的WIN32OLE
編輯3: 代碼正確另一臺計算機上終止進程,所以可能是有問題的版本?在jruby 1.5.6上工作,進程掛在1.6.5.1上
感謝輸入,但它仍然沒有終止程序 – janDro
你仍然可以看到任務欄中的程序,或者您可以在任務管理器中看到該過程? – Daiku
任務管理器中的進程。當我多次運行這個腳本時,我得到一個新的進程,最後我必須從任務管理器手動結束多個進程。對於混淆抱歉,意味着過程而非程序 – janDro