Как автоматизировать микрофокусную румбу с помощью VB.Net

#vb.net #automation #mainframe #microfocus

#vb.net #автоматизация #мэйнфрейм #микрофокус

Вопрос:

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

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

Я не смог создать объекты «Microfocus.Румба «/»Румба.Система»/»Rumba.Приложение» из-за ошибки «Не удается создать Activex-компонент». Я попытался решить эту проблему, зарегистрировав dll с помощью RegAsm.exe . Но в нем говорится, что Dll не является допустимой сборкой .net.

Я прикрепил снимки ошибок.

Ошибка при добавлении DLL-файлов в раздел ссылок.Сетевое решение

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

Недопустимый .Ошибка чистой сборки

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

Любые рекомендации будут высоко оценены.

Спасибо.

Ответ №1:

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

Комментарии:

1. Большое вам спасибо, Маркл. Я попробую и обновлю.

2. Привет, Маркл, я попробовал это так, как ты сказал. Тот же код, который вы дали, работает при написании в виде макроса Excel, но он не работает в VB.Net . Я что-то упускаю?

3. Я включил функцию «Подключиться к PS» и функцию «Отправить ключ» в VB.Net . Я получаю код возврата 2 для обеих функций. Странно то, что в руководстве EHLLAPI нет объяснения кода возврата 2 для «Подключения к PS».

4. Возвращаемые значения состояния одинаковы для всех функций HLLAPI. 2 является недопустимым аргументом. То, что это не задокументировано как статус возврата для Attachmate HLLAPI, но вы получаете его при вызове Rumba HLLAPI, говорит о том, что вам нужна документация Rumba HLLAPI. Я не знаю, где это найти (я не искал). Я сказал, что HLLAPI в основном является стандартным для всех поставщиков, вероятно, это разница между Attachmate и Rumba — один может возвращать 2 для ConnectPS, а другой — нет.

5. Спасибо за ваш ответ, Маркл. Тот же код, который вы дали, работает при написании в виде макроса Excel, но он не работает в VB.Net . Я что-то упускаю? Мне интересно, как код работал в макро Excel, но не работал в VB.Net . Так что я думаю, что это нечто отличное от документации HLLAPI.