Ruby Win32ole HRESULT错误代码:0x80040154

时间:2017-07-07 16:58:03

标签: ruby win32ole

我正在尝试打开一个应用程序:Bluezone Mainframe Emulator,试图用Ruby自动化一些大型机进程。

尝试使用Win32ole打开应用程序时遇到问题。到目前为止,这是我的代码:

require 'win32ole'

class BluezoneRunner
  attr_reader :app

  def initialize
    @type = WIN32OLE_TYPE.new('BZWhll 7.1 Type Library', 'WhllObj')
    @app = WIN32OLE.new('BZWhll.WhllObj')
  end

  def visible=(is_visible)
    @app.visible = is_visible
  end

  def close
    @app.Quit
  end
end

使用此错误分配应用程序对象时脚本失败:

Uncaught exception: failed to create WIN32OLE object from `BZWhll.WhllObj'
    HRESULT error code:0x80040154
      Class not registered
    C:/RubyProjects/mksta-sandbox/bluezone-automation/run_ole.rb:9:in `initialize'
    C:/RubyProjects/mksta-sandbox/bluezone-automation/run_ole.rb:9:in `new'
    C:/RubyProjects/mksta-sandbox/bluezone-automation/run_ole.rb:9:in `initialize'
    C:/RubyProjects/mksta-sandbox/bluezone-automation/bluezone_runner.rb:3:in `new'
    C:/RubyProjects/mksta-sandbox/bluezone-automation/bluezone_runner.rb:3:in `<top (required)>'

我目前正在运行Windows 10 64位,Ruby 2.2.4p230(2015-12-16修订版53155)[x64-mingw32]。我试图运行的应用程序位于C:\ Program Files(x86)\ BlueZone \ 7.1。

对此错误的任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

事实证明,我的案例中的错误是由使用64位版本的Ruby引起的。

要解决此问题,请使用32位(X86)版本的Ruby来运行此代码。