如何使用 VB.Net 自动化 Microfocus Rumba
Posted
技术标签:
【中文标题】如何使用 VB.Net 自动化 Microfocus Rumba【英文标题】:How to automate Microfocus Rumba using VB.Net 【发布时间】:2020-10-08 09:20:11 【问题描述】:我正在尝试通过 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 程序集。
我已附上错误快照。
Error while adding the dlls in References section of the .Net solution
Cannot create ActiveX component error
Not a valid .Net assembly error
注意:我使用的是 MicroFocus Rumba Desktop 9.4.1
非常感谢任何指导。
谢谢。
【问题讨论】:
【参考方案1】:WHLLAPI.DLL 和 EHLAPI32.dll 不是 ActiveX com 组件(因此您不能使用 regsvr32 注册它,也不能通过 regasm 注册它来创建它的 com 互操作),它不是 .net 程序集(因此您不能简单地添加对它的引用)。它只是一个“老式”的调用库。你需要声明它,然后你可以调用它(通过 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
【讨论】:
非常感谢 MarkL。我会尝试并更新。 嗨,MarkL,我按照你说的方式试过了。您提供的相同代码在编写为 Excel 宏时有效,但在 VB.Net 中无效。我错过了什么吗? 我在VB.Net中加入了“连接PS”功能和“发送密钥”功能。我得到两个函数的返回码 2。奇怪的是,EHLLAPI 指南中没有对“连接到 PS”的返回码 2 进行解释。 返回状态值在所有 HLLAPI 函数中是统一的。 2 是无效的论点。它没有记录为 Attachmate HLLAPI 的返回状态,但您在调用 Rumba HLLAPI 时收到它表示您需要 Rumba HLLAPI 文档。我不知道在哪里找到它(我没有去寻找)。我确实说过 HLLAPI 在供应商之间大多是标准的,这可能是 Attachmate 和 Rumba 之间的区别 - 一个可以为 ConnectPS 返回 2,而另一个不能。 感谢您的回复 MarkL。您提供的相同代码在编写为 Excel 宏时有效,但在 VB.Net 中无效。我错过了什么吗?我想知道代码在 Excel 宏中是如何工作的,但在 VB.Net 中是如何工作的。所以我认为这与 HLLAPI 文档不同。以上是关于如何使用 VB.Net 自动化 Microfocus Rumba的主要内容,如果未能解决你的问题,请参考以下文章
如何在 VB.NET 中自动获取 SMTP 详细信息,如在 Thunderbird 中
如何使用 vb.net 2003 在 asp.net 1.1 中手动填充数据网格?