ruby查询界面不工作?

时间:2013-12-17 11:26:42

标签: ruby com ole

我遇到了 WIN32OLE#ole_query_interface 函数的问题。

我使用相同的源代码,如doc of the function中所述:

ie = WIN32OLE.new('InternetExplorer.Application')
ie_web_app = ie.ole_query_interface('{0002DF05-0000-0000-C000-000000000046}')

puts "ie_web_app: = #{ie_web_app.ole_type}"

,输出为:

# => ie_web_app: = IWebBrowser2

但我希望输出为 IWebBrowserApp 。我错过了什么?

BTW:我正在使用64位Win7,现在我已经使用了2个解释器进行测试:

  • ruby​​ 2.0.0 p353(2013-11-22)[x64-mingw32]
  • ruby​​ 1.9.3 p484(2013-11-22)[i386-mingw32]

这是来自tlb的coclass供参考:

  uuid(0002DF01-0000-0000-C000-000000000046),   helpstring("Internet Explorer Application.") ] coclass InternetExplorer {
    [default] interface IWebBrowser2;
    interface IWebBrowserApp;
    [default, source] dispinterface DWebBrowserEvents2;
    [source] dispinterface DWebBrowserEvents; };

以及IWebBrowserApp的相关部分:

[
  uuid(0002DF05-0000-0000-C000-000000000046),
  helpstring("Web Browser Application Interface."),
  hidden,
  dual
]
dispinterface IWebBrowserApp {

1 个答案:

答案 0 :(得分:0)

coclass说它实现了IWebBrowser2作为默认接口。我怀疑ruby的.ole_type方法正在使用它来生成可打印的名称。你能在结果界面上调用IWebBrowserApp方法吗?如果是这样的话,无论打印什么,它都是IWebBrowserApp