[英]WIN32OLE.connect(“winmgmts://”) returns nil with JRuby
我正在嘗試檢查Windows 7計算機上的JRuby中是否存在進程。 我正在努力:
require 'jwin32ole'
wmi = WIN32OLE.connect("winmgmts://")
processes = wmi.ExecQuery("select * from win32_process")
但是, WIN32OLE.connect("winmgmts://")
返回nil。
當我啟動Excel時,我能夠成功調用WIN32OLE.connect("Excel.Application")
,因此WIN32OLE.connect可以正常工作。
關於如何使此工作正常運行的任何建議,或檢查進程是否存在的另一種方法?
我發現看起來像是問題所在。
在jwin32ole中,這是用於連接的代碼:
def self.connect app
dispatcher=Java::com.jacob.activeX.ActiveXComponent.connectToActiveInstance(app)
if dispatcher.class.to_s != "NilClass"
AppDispatcher.new dispatcher
else
return nil
並查看jacob.activeXComponent.connectToActiveInstance的API文檔 :
對於其中帶有“:”的任何程序ID,這將失敗
當然,這將在嘗試連接到“ winmgmts:”時導致失敗。 為什么不接受冒號在這里沒有解釋。
必須直接使用jacob.activeXComponent中的另一種連接方法,該方法對prog id中的冒號沒有問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.