Das Notes Forum

HCL Notes / Domino / Diverses => Entwicklung => Thema gestartet von: AlexZX am 31.05.21 - 13:18:11

Titel: Zugriff auf Interface von COM Object
Beitrag von: AlexZX am 31.05.21 - 13:18:11
Hallo Forum,

ich stehe vor folgendem Problem.

Wir haben eine Software die eine COM API zur Verfügung stellt. Laut der API Beschreibung gibt es eine Klasse und mehrere Interfaces die verschiedene Methoden enthalten.

Ich verwende Lotusscript und erstelle über "CreateObject" das Object dieser Klasse. Wie kann ich jetzt auf die Methoden der verschiedenen Interfaces dieser COM API zugreifen?
Titel: Re: Zugriff auf Interface von COM Object
Beitrag von: CarstenH am 31.05.21 - 13:50:18
Hallo Alex,

hier im Forum finden sich eine Menge Beispiele über die Suche nach CreateObject

Ich habe jetzt einfach mal eins herausgegriffen, was mir übersichtlich erschien: https://atnotes.de/index.php/topic,57805.0.html

Ansonsten konkretisiere deine Frage etwas mehr, damit man sich ein Bild machen kann wo es jetzt hängt und was du selbst schon probiert oder herausgefunden hast.

HTH
Carsten
Titel: Re: Zugriff auf Interface von COM Object
Beitrag von: AlexZX am 31.05.21 - 16:27:33
Hallo Carsten,

vielen Dank für deine Antwort!

ich habe schon einige Erfahrung mit der COM API von Excel, Word und Outlook. Wenn ich z.B. bei Excel ein Objekt über CreateObject erstellt, kann ich direkt auf die Methoden zugreifen. z.B.

Code
Set vExcelApp = CreateObject("Excel.Application")
vExcelApp.Application.ScreenUpdating = False
vExcelApp.Visible = False
vExcelApp.Workbooks.Add
vExcelApp.ReferenceStyle = 1
vExcelApp.DisplayAlerts = False

Set vExcelSheet = vExcelApp.Workbooks(1).Worksheets(1)
vExcelSheet.Name = "Ein Name"

Jetzt habe ich jedoch den Fall, dass einige Methoden in Interfaces definiert sind. Es handelt sich um diese COM API http://downloads.mapandguide.de/data/mgDevAPI/Docs/namespacemg_a_p_i.html

Ich erstelle das Objekt:
Code
Set mgApi = CreateObject("mgAPI.mg_API")

Dann kann ich jedoch nur auf die Methoden von mg_API zugreifen.

z.B. ist die Methode GetVersion im Interface IVersion definiert. Wenn ich versuche die Methode über mein Objekt aufzurufen kommt der Fehler, dass die Methode nicht gefunden wurde:

Code
Dim mgApi  As Variant
Dim version as String

Set mgApi = CreateObject("mgAPI.mg_API")
version = mgApi.GetVersion

In der Beschreibung der API gibt es einige Beispiele, jedoch nur in C# und VB.NET. Das ist z.B. das Beispiel für das Anzeigen der Version in VB.NET
Code
Dim version as String

'Create instance of API COM object
m_mgAPI = New mgAPI.mg_API()

'Get API version
version = TryCast(m_mgAPI, IVersion).GetVersion()

Ich weiß nicht ob man das in Lotusscript so abbilden kann.


Titel: Re: Zugriff auf Interface von COM Object
Beitrag von: jBubbleBoy am 31.05.21 - 19:08:05
Mit "CreateObject" wird ein OLE-Objekt erzeugt, COM funktioniert anders.
Excel kann COM Bibliotheken einbinden, ich würde ein Excel-Makro schreiben und das von Notes aus aufrufen ::)
Titel: Re: Zugriff auf Interface von COM Object
Beitrag von: AlexZX am 02.06.21 - 10:26:44
Vielen Dank für den Hinweis...

Ich werde es über das Excel Macro probieren.

Gruß
Alex