Я пытаюсь автоматизировать 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. Пожалуйста, помогите.