В моем приложении Java SWT я размещаю сторонний элемент управления ActiveX. Я использую OleClientSite для этого.
// Ah, this works. :-)
OleAutomation comObject = new OleAutomation(...);
Есть две простые маленькие функции, которые я хочу вызвать из Java. Вот определения функций COM:
[id(5)]
void easyFoo([in] int blah);
[id(20)]
void problemFoo([in] VARIANT floatArray);
Легко, правда? Вот мой код для притворства:
// Ah, this works. :-)
OleAutomation comObject = new OleAutomation("Some3rdPartyControlHere");
// Call easyFoo(42). This works. :-)
int easyFooId = 5;
comObject.invoke(easyFooId, new Variant[] { new Variant(42) });
// Call problemFoo(new float[] { 4.2, 7.0 }). This doesn't work. :-(
int problemFooId = 20;
comObject.invoke(problemFooId, [ACK! What goes here?]);
Проблема в последней строке: как передать массив с плавающей точкой стороннему COM-объекту? HELP!