1 (изменено: ypppu, 2016-08-03 14:40:19)

Тема: VBS: COM объект из DLL

Доброго времени суток.

Зайду из далека.
Имеется почтовый сервер MDaemon. В комплекте с ним, в документации, имеются примеры работы с сервер по средствам COM. У MDaemon имеется свой собственный COM-интерфейс. Пример сделан на VB (работа с пользователями, календарями, общими папками... ).

В проекте есть такае строка:

Reference=*\G{01E88D14-F479-4CA5-9CA8-EBD2EED74C83}#1.0#0#..\..\..\..\..\..\..\MDaemon\App\MDUserCom.dll#MDUserCOM 1.0 Type Library

далее

Global gMDUser As MDUser

И далее идет работа с MDUser.


Надо это переложить на скрипт VBS.

Делаю так
Set gMDUser = New MDUser
Получаю ошибку - класс не зарегистрирован.

Делаю так
Set MDUser = GetObject("C:\MDaemon\App\MDUserCOM.dll", "MDUser")
Получаю ошибку 800a01ad (Невозможно создание объекта контейнером ActiveX).


Собственно вопрос: как создать MDUser в простом VBS скрипте?

2

Re: VBS: COM объект из DLL

А если так:


....
    Set oMDUser = CreateObject("MDUserCOM.MDUser")
    
    ' Load the dll
    If oMDUser.LoadUserDll() = True Then
        
        ' Get a handle to the user's record
        hUser = oMDUser.GetByEmail(sEmail)        
                
        ' Create an instance of MDUserInfo
        Set oMDUserInfo = CreateObject("MDUserCOM.MDUserInfo")
            
        ' Get the MDUserInfo object associated with the user handle
        oMDUser.GetUserInfo hUser, oMDUserInfo    
    
    End If
...

3

Re: VBS: COM объект из DLL

DimkaAV
Set gMDUser = New MDUser - на VBS такой номер без объявленного класса возможен только для Regexp, если не ошибаюсь. Подробнее.
И в любом случае регистрация библиотеки MDUserCOM.dll в том или ином (псевдо) виде необходима.
В случае библиотеки нужно создавать экземпляр класса по Set/With CreateObject("ProgID"), не иначе.