尝试使用BlueZone软件提供的EMReadScreen方法从RUBY lang中的Bluezone屏幕读取值。但此方法不返回缓冲区字符串中的值。它在VB脚本中工作正常,但在Ruby中。
链接到 API 文档 - https://www3.rocketsoftware.com/bluezone/help/v71/en/bzsh/default.htm#%2Fbluezone%2Fhelp%2Fv71%2Fen%2Fbzsh%2Fbzaa_aref_EMReadScreen.htm
法典:
require 'win32ole'
class Dummy
@system = WIN32OLE.new('BlueZone.System')
sleep 2
sessions = @system.Sessions
sleep 2
session = sessions.Open('path')
sleep 2
@system.WriteScreen("enter_screen", 18,40 ) # This one is working
sleep 4
@system.ReadScreen(@buffer_variable,05,18,40 ) # This line doesnt throw any error but buffer_varailble not storing any value.
sleep 2
puts @buffer_variable # returns nothing, expecting to store "enter"
end
某些 BlueZone 函数要求您在使用变量之前对其进行初始化。 尝试在调用 ReadScreen 之前将@buffer_variable设置为空字符串:
sleep 4
@buffer_variable = ""
@system.ReadScreen(@buffer_variable,05,18,40 )