Autor Thema: Zugriff auf Interface von COM Object  (Gelesen 2220 mal)

Offline AlexZX

  • Frischling
  • *
  • Beiträge: 35
Zugriff auf Interface von COM Object
« 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?

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
Re: Zugriff auf Interface von COM Object
« Antwort #1 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

Offline AlexZX

  • Frischling
  • *
  • Beiträge: 35
Re: Zugriff auf Interface von COM Object
« Antwort #2 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.



Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Zugriff auf Interface von COM Object
« Antwort #3 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 ::)
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline AlexZX

  • Frischling
  • *
  • Beiträge: 35
Re: Zugriff auf Interface von COM Object
« Antwort #4 am: 02.06.21 - 10:26:44 »
Vielen Dank für den Hinweis...

Ich werde es über das Excel Macro probieren.

Gruß
Alex

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz