本帖最后由 sxww321 于 2010-10-21 10:04:05 编辑

解决方案 »

  1.   

    int oper_state = Dispatch.call(sfel,"Encrypt",s1,s2).getInt();//取得返回值int oper_state 是call的返回值,是不是有一个A** 可变对象的
      

  2.   

    Variant var = Dispatch.call(sfel,"Encrypt",s1,s2).getInt();//取得返回值
    var.getInt();这样行吗?
    弄过一次忘了记下来,唉
      

  3.   

    jiazimo,你上面说的方法我试过了,获取回来的还是返回值,调用的函数除了返回值还有一个输出参数,输出参数的值现在不知道如何获取?
      

  4.   

    给个参考吧,我知道很多人对如何取的输出参数的事情头大。
    函数原型定义
    HRESULT getFace([in] long num1,[in] long num2,[out] BSTR  *pVal1,[out,retval] BSTR *pVal2 )
    两个输入参数,一个输出参数。一个返回值
    函数内方法
    *pVal1=::SysAllocString(L"这是输出参数[out]"); 
    *pVal2=::SysAllocString(L"这是返回值[out,retval]");java代码如下
    ActiveXComponent axc = new ActiveXComponent("testcom.Test");//获取对象
    Dispatch dis = axc.getObject();String str ="";//初始化
    Variant v1 = new Variant(str,true);//输出参数定义,必须这样,否则得不到输出参数的值

    Variant v2=new Variant();//返回值定义
    v2 = Dispatch.call(dis, "getFace", new Variant(100),new Variant(200),v1);System.out.println("输出参数值:"+v1);
    System.out.println("返回值:"+v2);
    经过测试,可以得到如下结果:
    输出参数:这是输出参数[out]
    返回值:这是返回值[out,retval]
      

  5.   

    非常感谢succinite大哥,搞了一天了。