【求助】JACOB对于组件函数输出参数的处理
本帖最后由 sxww321 于 2010-10-21 10:04:05 编辑
现在项目中有一个需求,客户给了一个组件exe形式的服务组件,里面有一个函数,该函数有两个输入参数,1个输出参数,1个返回值,函数原型如下:
HRESULT Encrpt([in] SAFEARRAY(byte)* pDataIn,
[Out] SAFEARRAY(byte)* pDataOut,
[in] VARINT_BOOL IsLastBlock,
[out,retval] OperationResultEnum* pRetVal);
我现在想要通过JACOB调用该函数,JAVA代码如下:
//获取SFEL组件
ActiveXComponent sfel = new ActiveXComponent("SFEL.FileEncryptor");
String s1="123";//传入参数
String s2="321";//传出参数
int oper_state = Dispatch.call(sfel,"Encrypt",s1,s2).getInt();//取得返回值
s1传入函数后会进行加密,加密后的内容由S2传出,但是JAVA中是值传递,现在获取不到s2的有效值。
------解决方案--------------------int oper_state = Dispatch.call(sfel,"Encrypt",s1,s2).getInt();//取得返回值
int oper_state 是call的返回值,是不是有一个A** 可变对象的
------解决方案--------------------Variant var = Dispatch.call(sfel,"Encrypt",s1,s2).getInt();//取得返回值
var.getInt();
这样行吗?
弄过一次忘了记下来,唉