Good day, dear friends! I have a problem with using external ActiveX DLL with LibreOffice 6.4.3.2. I am trying to import class and use methods and struct implemented in this library. Library implements this ActiveX interface:
// Generated .IDL/C++ pseudo source equivalent of Win32 type library ..\MY_LIB.dll
[
uuid({A0D78B5F-A571-43C3-992B-9C3440C435CC}),
version(6.2)
]
library MY_LIB
{
// Forward references and typedefs
dispinterface _cls_MYLIB;
[
uuid({5EF04958-B0A1-4EAF-8D79-1A6DC3FD9693}),
version(1.2)
]
dispinterface _cls_MYLIB
{
properties:
methods:
[id(19)] void vbLogin([in, out] typLoginInfo* tLogin);
[id(20)] void vbLogout();
};
[
uuid({73D100BA-CA3E-4696-8FFC-B93951A46A49}),
version(1.2)
]
coclass cls_MYLIB
{
[default] dispinterface _cls_MYLIB;
};
typedef [uuid({DD745AAD-F2F1-4AF3-BA78-2BAECD59CCF8}), version(1.0)] struct
{
[helpstring("strUser")] BSTR strUser;
[helpstring("strPassword")] BSTR strPassword;
[helpstring("strUserClass")] BSTR strUserClass;
[helpstring("strView")] BSTR strView;
} typLoginInfo;
};
I wrote some code for user login. DLL function vbLogin([in, out] typLoginInfo tLogin) uses input parameter – struct typLoginInfo defined in this library too. In MS Office Basic it was easy to implement:
Public g_tLoginInfo As MYLIB.typLoginInfo
But in LibreOffice I could not suggest how to do this. I also tried to define local struct and use in function vbLogin as parameter, but it does not work too. ERROR Type: com.sun.star.uno.RuntimeException
Message: [automation bridge] Unhandled user defined type.
‘Type typLoginInfo my defined struct does not work
‘ strUser As String correct with function cMYLIB.vbLogin(g_tLoginInfo)
‘ strPassword As String
‘ strUserClass As String
‘ strView As String
‘ bIsOnline As Boolean
‘End Type
Dim cMYLIB as Object
‘Dim g_tLoginInfo As MYLIB.typLoginInfo not work in Libre Basic
Set cMYLIB = CreateObject("MYLIB. cls_MYLIB ")
g_tLoginInfo.strUser = "user"
g_tLoginInfo.strPassword = "pass"
g_tLoginInfo.strUserClass = "User"
g_tLoginInfo.strView = "display"
g_tLoginInfo.bIsOnline = True
cMYLIB.vbLogin(g_tLoginInfo)
cMYLIB.vbLogout
Funcion cMYLIB.vbLogout which is calls without any parameters, works ok. Tell me please how should I correctly use type typLoginInfo defined in my ActiveX DLL?
P.S. Sorry for my grammar, I speak a little English.