Seite 1 von 1

Methoden eines Interface im Makro benutzen

Verfasst: So 20. Dez 2015, 14:16
von Makromador
Hallo zusammen,

mittlerweile bin ich bei meinem Projekt an einem Punkt angekommen, an dem ich nicht mehr weiter weiß. Ich bin dabei einen ModusTCP-Stack für LO Basic zu programmieren. Vorweg: Ich realisiere das mit Basic, wenn möglich, dann würde ich mir wünchen die Lösung auch in Basic zu implementieren.

Siehe hier: https://makromador.wordpress.com/einleitung/

Die Netzwerkprogrammering an sich ist auch kein Problem für mich. Jedoch wäre es schön das Interface XConnect2 einzubinden.

Siehe hier: https://makromador.wordpress.com/netzwerkverbindungen/

Möglicherweise könnte das über die Methode "queryInterface" aus dem Interface Xinterface funktionieren. Genau hier liegt mein Problem: Das einbinden z. B. über

Code: Alles auswählen

varConnector.queryInterface("com.sun.star.connection.XConnection2")
funktioniert fehlerfrei, jedoch kann ich dann auf die Methoden nicht zugreifen. Anbei die Stelle im Code, an der die Einbindung des Interface erfolgen soll:

Code: Alles auswählen

Sub ClientSocketConnect()

	Dim varConnector As Variant				'Connection-Objekt
	Dim varConnection As Variant			'Die aufzubauende Verbindung
	Dim strConDesc As String				'ConnectionDescription
	
	'ConnectionDescription - contains the kind of the connection plus a comma separated list of attributes,
	'e.g., socket,host=locahost,port=2345 for a tcpip connection. 
	'uno:[connection],params;[protocol],params;[objectname]
	strConDesc = "socket," & "host=" & g_udtMBMConnection.IP & ",port=" & g_udtMBMConnection.Port
	
	'http://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1connection_1_1Connector.html
	'Objekt für den Verbindungsuafbau erzeugen
 	varConnector = CreateUnoService("com.sun.star.connection.Connector")
 	'Erstellt eine neue Verbindung zur Interprozesskommunikation.
 	'Exception: NoConnectException, ConnectionSetupExcetion
 	g_varMBMSocketConnection = varConnector.connect(strConDesc)
 	'Ereignisbehandlung für die bestehende Verbindung implementieren
 	g_varMBMStreamListener = CreateUnoListener("ClientTransfer_", "com.sun.star.io.XStreamListener")
 	'Listener an Connection binden
	g_varMBMSocketConnection.addStreamListener(g_varMBMStreamListener)
	
End Sub
Egal in welcher weise ich die Einbindung des Interface versuche, ich kann die Methoden nicht benutzen. Habe das bereits mit Xray untersucht.

Ich wäre für jeden Hinweis dankbar.

vielen Dank und viele Grüße

Makromador

Re: Methoden eines Interface im Makro benutzen

Verfasst: Mi 24. Feb 2016, 21:15
von Makromador
Hallo,

habe mittlerweile bei einer anderen Gelegenheit herausgefunden, dass sich jedes beliebige Interface mittels CreateUnoListener() nutzen lässt:

Code: Alles auswählen

Sub XTester   
   BeliebigesInterface = CreateUnoListener("Client2_","com.sun.star.connection.XConnection2")
   MsgBox BeliebigesInterface.Dbg_Methods
   'BeliebigesInterface.available()
End Sub

Function Client2_available()
   MsgBox "Es hat geklappt"
End Function
Evtl. hat jemand eine Idee, wie ich nun die neu gewonnene Erkenntnis nutzen kann? Wäre für jeden Hinweis dankbar.


Grüße

Makromador

Re: Methoden eines Interface im Makro benutzen

Verfasst: Do 20. Okt 2016, 21:58
von Makromador
Hallo miteinander,

nun ist mir klar geworden, dass LO Basic eine implizites queryInterface ausführt. Soll heißen: entweder hat das Objekt die Interfaces bereits implmentiert oder die lassen sich mit einer addSoUndSo-Methode noch anhängen.

Ebenfalls scheint nun klar zu werden, dass das mit dem Interface Xconnector2 wohl eher schlecht aussieht, da XConnector bereits im Service implementiert ist und XConnector2 von XConnector erbt, also nachrangig zu diesem ist.


Vielleicht find noch eine Lösung.


Grüße

makromador