我正在尝试打开一个应用程序: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。
对此错误的任何帮助都会很棒!
答案 0 :(得分:1)
事实证明,我的案例中的错误是由使用64位版本的Ruby引起的。
要解决此问题,请使用32位(X86)版本的Ruby来运行此代码。