【问题标题】:What is the difference between Ruby win32api and win32ole?Ruby win32api 和 win32ole 有什么区别?
【发布时间】:2026-02-27 08:50:01
【问题描述】:

一段使用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 的子集还是相反?两者有什么区别?

【问题讨论】:

    标签: ruby windows api winapi win32ole


    【解决方案1】:

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

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

    【讨论】: