Как автоматизировать Microfocus Rumba с помощью VB.Net

Я пытаюсь автоматизировать приложение Microfocus Rumba через VB.Net. Из-за некоторых ограничений я не могу использовать какие-либо макросы/скрипты, встроенные в Rumba.

Я узнал, что ehlapi32.dll можно использовать для автоматизации Rumba, но я не мог добавить ehlapi32.dll или WHLLAPI.dll в качестве ссылок на решение .Net.

Я не мог создавать объекты Microfocus.Rumba/Rumba.System/Rumba.Application из-за ошибки Cannot create Activex component. Я попытался решить эту проблему, зарегистрировав dll с помощью RegAsm.exe. Но он говорит, что Dll не является допустимой сборкой .net.

Прилагаю снимки ошибок.

Ошибка при добавлении dll в раздел "Ссылки" решения .Net

Не удается создать ошибку компонента ActiveX

Недопустимая ошибка сборки .Net

Примечание. Я использую MicroFocus Rumba Desktop 9.4.1.

Любое руководство глубоко оценено.

Спасибо.


person Gowrisankarrs    schedule 08.10.2020    source источник


Ответы (1)


WHLLAPI.DLL и EHLAPI32.dll не являются ком-компонентом ActiveX (поэтому вы не можете зарегистрировать его с помощью regsvr32 или создать для него ком-взаимодействие, зарегистрировав его с помощью regasm), и это не сборка .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/ellapi.pdf

person MarkL    schedule 08.10.2020
comment
Большое спасибо MarkL. Я попробую и обновлю. - person Gowrisankarrs; 09.10.2020
comment
Привет MarkL, я пробовал так, как ты сказал. Тот же код, который вы указали, работает, когда написан как макрос Excel, но не работает в VB.Net. Я что-то упускаю? - person Gowrisankarrs; 09.10.2020
comment
Я включил функцию «Подключиться к PS» и функцию «Отправить ключ» в VB.Net. Я получаю код возврата 2 для обеих функций. Странно то, что в руководстве по EHLLAPI нет пояснений для кода возврата 2 для подключения к PS. - person Gowrisankarrs; 09.10.2020
comment
Возвращаемые значения состояния одинаковы для всех функций HLLAPI. 2 недопустимый аргумент. То, что это не задокументировано как статус возврата для Attachmate HLLAPI, но вы получаете его при вызове Rumba HLLAPI, говорит о том, что вам нужна документация Rumba HLLAPI. Я не знаю, где это найти (не искал). Я сказал, что HLLAPI в основном является стандартным для всех поставщиков, это, вероятно, разница между Attachmate и Rumba — один может вернуть 2 для ConnectPS, а другой — нет. - person MarkL; 09.10.2020
comment
Спасибо за ответ, MarkL. Тот же код, который вы указали, работает, когда написан как макрос Excel, но не работает в VB.Net. Я что-то упускаю? Мне интересно, как код работал в макросе Excel, но не работал в VB.Net. Поэтому я думаю, что это что-то помимо документации HLLAPI. - person Gowrisankarrs; 09.10.2020