Quelle est la différence entre Ruby Win32api et Win32ole?

Un morceau de code ruby ​​utilisant win32ole

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

Un code utilisant 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) 

Le premier ouvre Internet Explorer et le second affiche un message. Le simple fait de dire les deux semble pouvoir accéder au système d’exploitation et le faire fonctionner. Win32ole est-il un sous-ensemble de win32api ou est-ce l’inverse? Quelle est la différence entre les deux?

win32ole est destiné à l’interopérabilité avec les bibliothèques et les applications écrites pour agir en tant que serveurs OLE / COM, voir Qu’est – ce que COM? pour une explication de cette technologie.

win32api interagit avec l’API du système d’exploitation (Win32), où OLE / COM est également implémenté, mais win32ole existe pour éliminer facilement une grande partie des complexités liées à l’utilisation de COM via son API de niveau inférieur.