Ruby win32api 和 win32ole 有什么区别?

What is the difference between Ruby win32api and win32ole?

一段ruby代码使用win32ole

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,第二个显示消息框。 简单地说,两者似乎都能够访问 OS 并让它做事。 win32ole 是 win32api 的子集还是相反?两者有什么区别?

win32ole 用于与编写为充当 OLE/COM 服务器的库和应用程序进行互操作,请参阅 What is COM? 了解该技术的解释。

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