En mi aplicación Java SWT estoy alojando un control ActiveX de terceros. Estoy usando OleClientSite para hacer esto.interoperabilidad SWT de Java con COM: ¿poner un flotador [] en una variante?
// Ah, this works. :-)
OleAutomation comObject = new OleAutomation(...);
Hay 2 pequeñas funciones que deseo llamar desde Java. Aquí están las definiciones de funciones COM:
[id(5)]
void easyFoo([in] int blah);
[id(20)]
void problemFoo([in] VARIANT floatArray);
Fácil, ¿no? Aquí está mi código de simulación:
// 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?]);
El problema está en la última línea: cómo puedo pasar de una red de flotadores a la tercera objeto COM fiesta? AYUDA!
Gracias por esas evaluaciones. Acabo de agregar un comentario que explica lo que encontré (y lo que hice * no *) sobre SAFEARRAY. – VonC
Acaba de agregar otra referencia a un proyecto de Java que manipula 'SAFEARRAY'. Puede ser que podría ayudar. – VonC
@Judah: el problema con '' VARIANT '' es que potencialmente puede ser cualquier cosa. Aún así, si es SAFEARRAY, ¿ha revisado http://j-integra.intrinsyc.com/support/com/doc/types/index.html y http://j-integra.intrinsyc.com/support/kb /Article.aspx?id=30430? – VonC