Java 通过jacob 调用VB activeX
function bus(const indata: WideString; var outdata: WideString): Smallint;
这个是VbOCX 函数里面带有一个输出的OutData; 现在调用没有问题,就是调用之后这个outdata的返回无法取到
有高手的来分不多.
Java Test ;
public class TestActive {
public static void main (String args[]){
ActiveXComponent xl = new ActiveXComponent("PB90.bshandle.7.3");
Dispatch disp = xl.getObject();
try{
int i = Dispatch.call(disp, "Init").getShort();
System.out.println("Ocx返回" + i);
String indata = "01|042201265187215183188187180192191265181189183183191211203" +
"1982632913173053363213221082651901961901881922792002652632912"+
"59256258178188261231257212223215658|22957663963766563363063262" +
"7634635639631563556554562577574639500|056231293221243215206216" +
"205288289293285293286284292307304293154" ;
Pointer pErrMsg = null;
pErrMsg = new Pointer(MemoryBlockFactory.createMemoryBlock(1024));
Variant vin = new Variant(indata) ;
Variant vout = new Variant("");
//i =Dispatch.call(disp, "bus",vin ,vout ).getShort();
i= Dispatch.call(disp, "business",vin ,vout).getShort();
System.out.println("business 返回值" + i );
if (vout.equals("")){
System.out.println("AA");
}
if (vout == null){
System.out.println("bb");
}
if (vout.isNull()){
System.out.println("NULL");
}
Object obj = new Object() ;
System.out.println( vout.toObject().toString()) ;
vout.putVariant(obj);
System.out.println("aa + " + obj.toString());
System.out.println("Vout1.toStrig= " +vout.getVariant());
System.out.println("Vout1.toStrig= " +vout.toByte() ) ;
System.out.println("Vout.toStrig= " + vout.toString());
String s = "";
s = pErrMsg.getAsString() ;
System.out.println(s);
vout.putString(s);
System.out.println("ssss" + s);
//System.out.println(vout.getStringRef());
//String s = vout.getString() ;
//System.out.println(s);
} catch (Exception e){
e.printStackTrace();
}finally{
//xl.invoke("Quit", new Variant[] {});
}
}
}