我正在尝试检查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可以正常工作。
有关如何使其正常工作的任何建议,或其他检查流程是否存在的方法?
答案 0 :(得分:0)
我发现了看起来像什么问题。
在jwin32ole中,这是connect的代码:
def self.connect app
dispatcher=Java::com.jacob.activeX.ActiveXComponent.connectToActiveInstance(app)
if dispatcher.class.to_s != "NilClass"
AppDispatcher.new dispatcher
else
return nil
看着the API documentation for jacob.activeXComponent.connectToActiveInstance:
对于任何带有“:”的编程
,这将失败当然,在尝试连接到“winmgmts:”时会导致失败。为什么它不接受冒号而没有解释。
jacob.activeXComponent中的另一个连接方法必须直接使用,这对prog id中的冒号没有问题。