簡體   English   中英

WIN32OLE.connect(“ winmgmts://”)使用JRuby返回nil

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM