2017-10-27 2 views
1

I Beispiele haben ähnliche Verwenden JNA zu Create eines COM-Objekts habe ich keine .class für

MsWordApp comObj = this.factory.createObject(MsWordApp.class); 

in anderen Fragen hier on SO

gesehen.

Mein Problem ist, dass ich ein Objekt zu erstellen, wie es in einem vbscript Beispiel getan wird:

Set tdc = CreateObject("TDApiOle80.TDConnection") 

In diesem Szenario die Create benötigen würde einen String zu verarbeiten, keine Klasse. Wie kann ich dieses VBScript in Java/JNA übersetzen?

+1

Java kann kein Objekt erstellen, das es nicht kennt. Wenn Sie also .class nicht haben, können Sie das Objekt nicht erstellen. – Lino

+0

Sie könnten vielleicht einige Java-Klassenquellcodes generieren und im Handumdrehen kompilieren. – Vlasec

Antwort

2

VBScript ist im Wesentlichen CLSIDFromProgID gefolgt von CoCreateInstance, mit Fehlerbehandlung.

VBScript verwendet immer späte Bindung, so dass Sie an IDispatch Unterstützung interessiert sind.

Es scheint JNA dies durch COMBindingBaseObject bietet:

new COMBindingBaseObject("TDApiOle80.TDConnection", false) 

Dann die IDispatch bereitgestellt verwenden Methoden aufzurufen und oder setzen Eigenschaften zu erhalten.

Reference.

Verwandte Themen