使用win32ole的 ruby 代码

require 'win32ole'
ie = WIN32OLE.new('InternetExplorer.Application')
ie.visible = true
ie.gohome

一些使用win32api的代码
require "Win32API"
message = "This is a sample Windows message box generated using Win32API"
title = "Win32API from Ruby"
api = Win32API.new('user32', 'MessageBox',['L', 'P', 'P', 'L'],'I')
api.call(0,message,title,0)

第一个打开Internet Explorer,第二个显示一个消息框。
简单地说,两者似乎都可以访问操作系统并使其发挥作用。 win32ole是win32api的子集还是相反?两者有什么区别?

最佳答案

win32ole用于与已编写为充当OLE/COM服务器的库和应用程序进行互操作,有关该技术的说明,请参见What is COM?

win32api与也是OLE/COM的操作系统API(Win32)进行交互,但是win32ole的存在是为了通过其较低级别的API方便地抽象出使用COM所涉及的许多复杂性。

10-08 04:58