Java 通过jacob 调用VB activeX

freeman0526 2011-09-22 06:41:19
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[] {});
}
}

}
...全文
133 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
JACOB里的总共有两个包: com jacob activeXJACOB可以通过它调度(Dispatch)activeX 控件 com jacob com:JACOB通过它调用系统DLL (activeX是由微软公司推出的用于Internet的技术 以前曾经被称为OLE 和OCX activeX web插件可以用于各种非HTML的工作 比如 对MicrosoftExcel 或 MicrosoftWord 文件做操作 解析JS VB脚本 播放FA有一点可以确定的是在JACOB内部 com jacob activeX是建立在com jacob com之上的 而com jacob com中有一个很基础的类com jacob com JacobObject 其中比较常用的两个类com jacob com Dispatch和com jacob com Variant便是继承自它 (com jacob com Dispatch;里面提供了调度MS windows系统API 比如进程的管理 com jacob com Variant; 里面数据类型的转换的方法 Variant类本身是JACOB的最最基本的数据类 他可以被转换成任何的类 如: 使用toDispatch();可以将Variant转化成Dispatch对象 ) com jacob com中还有其他的一些类不是建立在JacobObject之上的 如com jacob com ComThread(负责COM线程管理 ) com jacob com所有的类 包括上面说到的JacobObject ComThread 都是通过com jacob com LibraryLoader中的loadJacobLibrary()方法: static { LibraryLoader loadJacobLibrary ; } 调用jacob dll内的方法 比如:Dispatch java就通过LibraryLoader和Dispatch h Dispatch cpp建立联系 从而建立起javajacob dll到jni的之间的联系 LSH 调用Microsoft MediaPlayer等 )">JACOB里的总共有两个包: com jacob activeXJACOB可以通过它调度(Dispatch)activeX 控件 com jacob com:JACOB通过它调用系统DLL (activeX是由微软公司推出的用于Internet的技术 以前曾经被称为OLE 和OCX activeX web插件可以用于各 [更多]
JACOB里的总共有两个包: com jacob activeXJACOB可以通过它调度(Dispatch)activeX 控件 com jacob com:JACOB通过它调用系统DLL (activeX是由微软公司推出的用于Internet的技术 以前曾经被称为OLE 和OCX activeX web插件可以用于各种非HTML的工作 比如 对MicrosoftExcel 或 MicrosoftWord 文件做操作 解析JS VB脚本 播放FA有一点可以确定的是在JACOB内部 com jacob activeX是建立在com jacob com之上的 而com jacob com中有一个很基础的类com jacob com JacobObject 其中比较常用的两个类com jacob com Dispatch和com jacob com Variant便是继承自它 (com jacob com Dispatch;里面提供了调度MS windows系统API 比如进程的管理 com jacob com Variant; 里面数据类型的转换的方法 Variant类本身是JACOB的最最基本的数据类 他可以被转换成任何的类 如: 使用toDispatch();可以将Variant转化成Dispatch对象 ) com jacob com中还有其他的一些类不是建立在JacobObject之上的 如com jacob com ComThread(负责COM线程管理 ) com jacob com所有的类 包括上面说到的JacobObject ComThread 都是通过com jacob com LibraryLoader中的loadJacobLibrary()方法: static { LibraryLoader loadJacobLibrary ; } 调用jacob dll内的方法 比如:Dispatch java就通过LibraryLoader和Dispatch h Dispatch cpp建立联系 从而建立起javajacob dll到jni的之间的联系 LSH 调用Microsoft MediaPlayer等 )">JACOB里的总共有两个包: com jacob activeXJACOB可以通过它调度(Dispatch)activeX 控件 com jacob com:JACOB通过它调用系统DLL (activeX是由微软公司推出的用于Internet的技术 以前曾经被称为OLE 和OCX activeX web插件可以用于各 [更多]

58,452

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧