vb.net - 如何使用 VB.Net 自动化 Microfocus Rumba
问题描述
我正在尝试通过 VB.Net 自动化 Microfocus Rumba 应用程序。由于某些限制,我无法使用 Rumba 中内置的任何宏/脚本功能。
我知道 ehlapi32.dll 可用于自动化 Rumba,但我无法添加 ehlapi32.dll 或 WHLLAPI.dll 作为对 .Net 解决方案的引用。
由于错误“无法创建 Activex 组件”,我无法创建“Microfocus.Rumba”/“Rumba.System”/“Rumba.Application”的对象。我试图通过使用 RegAsm.exe 注册 dll 来解决它。但它说 Dll 不是有效的 .net 程序集。
我附上了错误快照。
注意:我使用的是 MicroFocus Rumba Desktop 9.4.1
任何指导都深表感谢。
谢谢。
解决方案
WHLLAPI.DLL 和 EHLAPI32.dll 不是 ActiveX com 组件(因此您不能使用 regsvr32 注册它,也不能通过 regasm 注册它来创建它的 com 互操作),它不是一个 .net 程序集(因此你可以' t 只需添加对它的引用)。它只是一个“老式”的调用库。你需要声明它,然后你可以调用它(通过 P/Invoke,技术性的)。
像(最简单的版本):
Declare Sub hllapi Lib "EHLAPI32.dll" (lpwFunction As Int32, ByVal lpbyString As String, lpwLength As Int32, lpwReturnCode As Int32)
然后调用它
Dim status as Int32
Call hllapi(1, "A", 1, status) ' Connect to Presentation Space A
您需要参考 HLLAPI 文档,该文档的多个版本/实例可在线获得,并附有示例(并且它主要是跨供应商的标准)。一个是https://docs.attachmate.com/extra/x-treme/apis/ehllapi.pdf
推荐阅读
- python - Flask SQLalchemy 多对多:选择和更新
- android - 通过蓝牙将 Zebra TC26 ZPL Android Studio 发送到 ZD420 无法连接到设备
- c++ - 如何等待两个计时器中的任何一个完成(Boost Asio)
- python - 如何读取二进制文件?
- android - 如何在 Flutter 中创建遮罩?
- cordova - 使用 Apache Cordova 在后台跟踪位置
- node.js - 为什么 AWS.S3 getObject().createReadStream() 不返回数据而 getObject().promise() 呢?
- php - mysql更新json字段被引用
- flutter - 在颤振中创建一个 pdf 文件,其中包含一些属性,如名称、作者、日期等
- reactjs - 我想使用 sagas 函数在与 api 的反应中实现登录