Что нового

[Автоматизация] Реализация класса на AutoIt

abb

Новичок
Сообщения
5
Репутация
0
Здравствуйте,
Подскажите, пожалуйста, в каком направлении смотреть.
Нужно реализовать на AutoIt-е СОМ-интерфейс, который на VBA выглядит примерно так
Код:
' Обработка событий
Public WithEvents stClient As StServer

Private Sub Class_Initialize()
If stClient Is Nothing Then
    Set stClient = New StServer
    If Err.Number <> 0 Then MsgBox ("Error " & Err.Description)
    If stClient Is Nothing Then
      MsgBox ("Невозможно установить соединение")
    Else
      'MsgBox ("Соединение установлено")
    End If
End If
End Sub

Private Sub Class_Terminate()
If stClient Is Nothing Then
    MsgBox ("Соединение уже разорвано")
Else
    Set stClient = Nothing
    'MsgBox ("Соединение разорвано")
End If
End Sub

Private Sub stClient_Connected()
   ' обработка события  
   бла-бла-бла
End Sub

Private Sub stClient_Disconnected(ByVal reason As String)
   ' обработка события  
   бла-бла-бла
End Sub


'Методы
Private stSrv As StServerTest
Sub КнопкаСтарт_Щелчок()
' ---------------- установка соединения
If stSrv Is Nothing Then
    Set stSrv = New StServerTest
    If Not stSrv.stClient.IsConnected() Then MsgBox ("Убедитесь что установлено соединение с сервером")
  Else
    MsgBox ("Соединение уже установлено")
End If                      ' конец установки соединения

Call stSrv.stClient.Test(...)
...
end sub
Заранее спасибо
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Если ты хочешь составить свой dll из функций на AutoIt, то не получится. Но есть AutoItX, который, если я не ошибаюсь, как раз и позволяет вызывать функционал AutoIt через COM-интерфейс. покопай в том направлении
 
Автор
A

abb

Новичок
Сообщения
5
Репутация
0
Нет, тут несколько наоборот. Мне надо "перевести" в AutoIt некие взаимодействия со сторонним СОМ-интерфейсом: подставить этому интерфейсу обработчики на AutoIt-е и вызывать в AutoIt-e функции этого интерфейса
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
abb [?]
Мне надо "перевести" в AutoIt некие взаимодействия со сторонним СОМ-интерфейсом:
это можно сделать подключив соответствующую библиотеку через
Код:
ObjCreate()

если объектная модель зарегистрирована в системе, либо через
Код:
DllCall()

если под рукой только dll
 
Автор
A

abb

Новичок
Сообщения
5
Репутация
0
Спасибо.
Но можно ли подставить СОМу AutoIt-овские обработчики?
DllCallbackGetPtr ( handle ) можно для этого пользовать?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
abb [?]
DllCallbackGetPtr ( handle ) можно для этого пользовать?
как я понял из справки, то можно. а что мешает попробовать? :smile:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 333
abb [?]
можно ли подставить СОМу AutoIt-овские обработчики?
Kaster написал выше, для этого используется AutoItX.

[?]
надо "перевести" в AutoIt некие взаимодействия со сторонним СОМ-интерфейсом: подставить этому интерфейсу обработчики на AutoIt-е и вызывать в AutoIt-e функции этого интерфейса
Зачем такие сложности - создать класс в аутоите для использования в том же аутоите? смысл? :blink:
 
Автор
A

abb

Новичок
Сообщения
5
Репутация
0
Давайте попробую еще раз объяснить постановку задачи. Видимо я не достаточно владею терминологией.
Есть СОМ-интерфейс с методами (то, что обрабатывается внутри СОМ-а и может быть "вызвано" как функция извне, из Автоита, например) и событиями (то, что обрабатывается вне СOM-а, например, в Автоите, и может быть "вызвано" из СОМ-а). В Бейсике, пример на котором я привел выше, события реализованы в виде классов. Задача - наладить контакт между СОМ-ом и программой на Автоите. Хотел было (как писал раньше) реализовать события через DllCallbackGetPtr ( handle ), но уже DllOpen дает ошибку... Там еще довольно мутная ситуация с именами Dll-файлов.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 333
abb [?]
Задача - наладить контакт между СОМ-ом и программой на Автоите
Ещё раз - AutoIt имеет поддержку COM объектов, из него можно вызывать класы этих объектов. Но если нужно построить такой класс на AutoIt, то стоит посмотреть на оф. форуме тему Creating COM objects without a need of DLL's.
 
Верх