1

Тема: VBS:Не получается подключить COM объект.

Добрый день!
Есть com сервер cmt.dll, библиотека в реестре зарегистрирована, OLE/View на скрине
Пытаюсь добраться до метода "Start" смотреть скрин.
Код следующий:
Строка 1 - Dim a
Строка 2 - Set a=CreateObject("cmt.CmtControl")
Строка 3 - a.Start()
При компиляции выдает ошибку "Требуется объект" строка 3, символ 2. Подскажите что неправильно делаю?

Post's attachments

Безымянный.jpg 294.35 kb, 2 downloads since 2018-03-05 

You don't have the permssions to download the attachments of this post.

2

Re: VBS:Не получается подключить COM объект.

dmitrich-07,
1) А можно "пощупать" cmt.dll в живую ?
2) О какой "компиляции" идёт речь ? Вы имели в виду при запуске скрипта и его "интерпретации" или я неправильно Вас понял ?

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

3

Re: VBS:Не получается подключить COM объект.

1) dll прикрепил
2) Да, имелось ввиду при запуске скрипта, выдает ошибку "требуется объект"

4

Re: VBS:Не получается подключить COM объект.

Сама dll забыл прикрепить!)

Post's attachments

cmt.dll 33.5 kb, 3 downloads since 2018-03-06 

You don't have the permssions to download the attachments of this post.

5

Re: VBS:Не получается подключить COM объект.

Xameleon
Да и еще, в vb.net следующий код работает на ура

Imports cmtLib
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
        Dim Start As New CmtControl, pError As Integer, pErrorDescription As String

        Start.Start(pError, pErrorDescription)

    End Sub
End Class

6

Re: VBS:Не получается подключить COM объект.

dmitrich-07, поизучал библиотечку. Не совсем она подходит для VBS и JS. Я далеко не хороший знаток архитектуры COM, но по моему представлению дело в том, что созданный объект возвращает интерфейс IUnknown  и все методы имеют формат вызова stdcall,
а по правилам работы COM должен возвращатcя интерфейс IDispatch + dual, который после перебора отдаст указатель на необходимый метод / свойство.

Для сравнения сделал скриншоты отображения FileSystemObject и Вашего объекта в oleview и отметил места, о которых говорил.

+ открыть спойлер

https://i.imgur.com/yIU6UuZ.jpg
https://i.imgur.com/DdbPG9O.jpg

Предполагаю, что возможно пересобрать TLB для этой DLL таким образом, чтобы она штатно работала и в скриптах, но к сожалению сам с этим мало помогу. Скорее всего Вам стоит спросить об этом на bbs.vbstreets.ru

P.S Либо можно сделать wrapper на NET. )

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

7

Re: VBS:Не получается подключить COM объект.

Спасибо за ответ!
Решил все таки на vb.net замутить, и столкнулся с проблемой.  Проблема значит следующая:
Пытаюсь использовать метод GetAbonentState, для того, чтобы получить состояние абонентов. Попробовал следующий код:

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        Dim abonents As New ICmtControl
        Dim pdwCount As UInteger
        Dim savep As New SABONENT_STATE
        Dim ppAbonentState As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(savep))
        abonents.GetAbonentState(pdwCount, ppAbonentState)
        savep = CType(Marshal.PtrToStructure(ppAbonentState, GetType(SABONENT_STATE)), SABONENT_STATE)
        TextBox9.Text = savep.Name
    End Sub

В результате в tetxtbox выводит иероглифы не читаемые. В общем метод GetAbonentState возвращает кол-во абонентов и указатель на массив структур, помогите разобраться с этим указателем?
Спасибо!

8

Re: VBS:Не получается подключить COM объект.

dmitrich-07, боюсь не смогу Вам помочь с Net кодом. Как я уже говорил, об этом лучше спросить на bbs.vbstreets.ru.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !