Создание класса AS400 для реализации в приложении vb. net - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь автоматизировать AS400 с помощью приложения vb. net. Когда я создаю объекты в модуле, он работает без проблем. Код внутри модуля выглядит следующим образом:

Module Module1
    Public autECLPSObj As Object
    Public autECLConnList As Object
    Public autECLOIAObj As Object
    Public autECLWinMetrics As Object
    Public SetEmulatorReady As Boolean
    Public Sub Create(ByVal Session as String)
        autECLPSObj = CreateObject("PCOMM.auteclps")
        autECLConnList = CreateObject("PCOMM.auteclconnlist")
        autECLOIAObj = CreateObject("PCOMM.autecloia")
        autECLWinMetrics = CreateObject("PCOMM.auteclwinmetrics")
        Session = UCase(Session)
        If autECLConnList.FindConnectionByName(Session) Is Nothing Then
            SetEmulatorReady = False
            Exit Function
        End If
        autECLPSObj.SetConnectionByName(Session)
        autECLOIAObj.SetConnectionByName(Session)
        autECLWinMetrics.SetConnectionByName(Session)
        autECLPSObj.auteclfieldlist.Refresh
        autECLConnList.Refresh
        SetEmulatorReady = True
    End Sub
End Module

Но я пытаюсь создать класс, а внутри нового конструктора я хочу создать соединение, как показано ниже:

Public Class UNET

    Dim autECLPSObj As Object
    Dim autECLConnList As Object
    Dim autECLOIAObj As Object
    Dim autECLWinMetrics As Object
    Private boolEmulatorConnectionState As Boolean
    Public Property SetEmulatorReady As Boolean
        Get
            Return boolEmulatorConnectionState
        End Get
        Set(ByVal value As Boolean)
            boolEmulatorConnectionState = value
        End Set
    End Property
    Public Sub New(ByVal Session As String)
        Dim strEmulator
        strEmulator = Session.ToUpper()
        autECLPSObj = Nothing
        autECLConnList = Nothing
        autECLOIAObj = Nothing


        autECLPSObj = CreateObject("PCOMM.auteclps")
        autECLConnList = CreateObject("PCOMM.auteclconnlist")
        autECLOIAObj = CreateObject("PCOMM.autecloia")
        autECLWinMetrics = CreateObject("PCOMM.auteclwinmetrics")

        If autECLConnList.FindConnectionByName(strEmulator) Is Nothing Then

            SetEmulatorReady = False
        Else
            autECLPSObj.SetConnectionByName(Session)
            autECLOIAObj.SetConnectionByName(Session)
            autECLWinMetrics.SetConnectionByName(Session)
            autECLPSObj.auteclfieldlist.Refresh
            autECLConnList.Refresh
            strWindowTitle = autECLWinMetrics.WindowTitle
            SetEmulatorReady = True
        End If

    End Sub
    Private strWindowTitle As String
    Public Property WindowTitle As String
        Get
            Return strWindowTitle
        End Get
        Set(ByVal value As String)
            strWindowTitle = value
        End Set
    End Property


End Class

Хотя с помощью этого CreateObject не работает, получая ошибку

'CreateObject не объявлен. Он может быть недоступен из-за уровня защиты.

Также пробовал

autECLPSObj = Activator.CreateInstance(Type.GetTypeFromProgID("PCOMM.auteclps"))
autECLConnList = Activator.CreateInstance(Type.GetTypeFromProgID("PCOMM.auteclconnlist"))
autECLOIAObj = Activator.CreateInstance(Type.GetTypeFromProgID("PCOMM.autecloia"))
autECLWinMetrics = Activator.CreateInstance(Type.GetTypeFromProgID("PCOMM.auteclwinmetrics"))

Однако он создает объект, выдает ошибку, когда я пытаюсь получить WindowTitle в

strWindowTitle = autECLWinMetrics.WindowTitle

Он говорит, что целевой процесс завершен с код 3221226356 при оценке функции 'autECLWinMetrics.WindowTitle'.

Даже взятие ссылки на AS400 и объявление переменных как

Dim autECLPSObj As AutPSTypeLibrary.AutPS
Dim autECLConnList As AutConnListTypeLibrary.AutConnList
Dim autECLOIAObj As AutOIATypeLibrary.AutOIA
Dim autECLWinMetrics As AutWinMetricsTypeLibrary.AutWinMetrics

не помогло и сгенерировало ту же ошибку на

autECLWinMetrics.WindowTitle

Я что-то упустил? Я хочу создать этот класс, чтобы при создании объекта UNET с использованием

Dim U As New UNET("A")
If U.SetEmulatorReady Then
    MsgBox(U.WindowTitle)
Else
    MsgBox("Not created")
End If

, чтобы я мог полностью реализовать концепцию OOPS. Пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...