日期:2014-05-19  浏览次数:20718 次

【求助】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();

这样行吗?
弄过一次忘了记下来,唉