`
asdcls
  • 浏览: 17147 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

感觉JACOB 比jcom好用,调用很方便

    博客分类:
  • java
阅读更多

在使用java 与com 相互调用的方法中采用jacob的方法,比jcom要好用的得多

如下是C++ Com 组件的定义文档 IDL

simpleDll.idl : simpleDll 的 IDL 源
//

// 此文件将由 MIDL 工具处理以
// 产生类型库(simpleDll.tlb)和封送处理代码。

import "oaidl.idl";
import "ocidl.idl";

[
	object,
	uuid(F2F1B880-B6EB-44B0-9821-6B5F6DEE7D89),
	dual,
	nonextensible,
	helpstring("ItestDll 接口"),
	pointer_default(unique)
]
interface ItestDll : IDispatch{
	[id(1), helpstring("方法returnStr")] HRESULT returnStr([out,retval] BSTR* result);
	[id(2), helpstring("方法a")] HRESULT a([in] BSTR strin, [out,retval] BSTR* strout);
	[id(3), helpstring("方法b")] HRESULT b([in] BSTR str1, [in] LONG i3, [out,retval] BSTR* result);
	[id(4), helpstring("方法c")] HRESULT c([in] BSTR a, [in] BSTR b, [in] BSTR cx, [out,retval] BSTR* ret);
	[id(5), helpstring("方法d")] HRESULT d([in] LONG a, [out,retval] BSTR* c);
	[id(6), helpstring("方法e")] HRESULT e([in] SHORT a);
	[id(7), helpstring("方法f")] HRESULT f([in] SHORT a, [out,retval] LONG* b);
	[id(8), helpstring("方法g")] HRESULT g([in] DOUBLE a, [out,retval] DOUBLE* d);
};
[
	uuid(BBAF4F2C-B518-424D-AF18-EB5557EFE8DE),
	version(1.0),
	helpstring("simpleDll 1.0 类型库")
]
library simpleDllLib
{
	importlib("stdole2.tlb");
	[
		uuid(1527E009-D95D-4ED6-821C-C58C228424ED),
		helpstring("testDll Class")
	]
	coclass testDll
	{
		[default] interface ItestDll;
	};
};

 

 JCOM 的调用方式:

import jp.ne.so_net.ga2.no_ji.jcom.IDispatch;
import jp.ne.so_net.ga2.no_ji.jcom.ReleaseManager;

public class Javacall {

	static {
		System.loadLibrary("jcom");
	}

	public static void main(String[] args) {
		process(null);
	}

	public static String process(Object[] o) {
		ReleaseManager rm = new ReleaseManager();
		try {
			IDispatch vbcom = new IDispatch(rm, "simpleDll.testDll.1");
			Double l = 234.00;
			Double bb =(Double) vbcom.method("g",new Object[]{l});
			System.out.println("return: " + bb);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			rm.release();
		}
		return null;
	}
}

 

Jacob调用方式:

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

/**
 * @author wanggang
 * @version Dec 30, 2009
 */
public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Dispatch dis = new Dispatch("simpleDll.testDll");
		Variant ret = dis.call(dis, "g", 234);
		System.out.println(ret);
		
		Variant ret1 = dis.call(dis, "returnStr");
		System.out.println(ret1);
		Variant ret2 = dis.call(dis, "d",1.0);
		System.out.println(ret2);
		///////////
		
		 ret2 = dis.call(dis, "e",1111);
		System.out.println(ret2);
		ret2 = dis.call(dis, "f",22222);
		System.out.println(ret2);
	}

}

 

对于传入类型的支持,对于jcom,由于文档是日文的看的不是很懂,而且,在传入的参数列表中,不能有Long类型,有的话,就被认为是jobject,这很郁闷,还有在参数中同时有short ,string,double 莫名的出错。而且调用的时候必须得传参数对象数组。

  而jacob,传入的类型,就没有限制了,甚至接口用的是short 我传long类型的也没有报错,当然,我还没有看超出精度范围的时候是否报错,而且传参的时候,可以用dis.call(dis, "e",1111);看API有若干个这样的重载函数,比较方便。

存储过程IN参数疑难问题解决方法【真正解决】 - 和申 - 和申的个人主页

1
0
分享到:
评论

相关推荐

    仿百度文库解决方案

    仿百度文库解决方案(三)——利用JCom调用MS Office或者Acrobat API转换文档为PDF 仿百度文库解决方案(四)——利用JODConverter调用OpenOffice.org服务转换文档为PDF 仿百度文库解决方案(五)——利用SWFTools...

    java word转换pdf

    1、利用小美的Jacob调用MS Office转换文档为PDF 2、JCom是日本的一个开源项目,可以轻松实现office转换pdf 3、可以利用开源的OpenOffice,这个是linux提供的一个用于office的工具,调用内部API可以方便转换。 另外...

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包2

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包3

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包6

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包10

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包4

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包8

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包7

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包9

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包101

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    Java资源包01

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    JAVA上百实例源码以及开源项目

     各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模型源代码 2个目标文件 摘要:Java源码,网络相关,UDP  基于JAVA的UDP服务器模型源代码...

    JAVA上百实例源码以及开源项目源代码

     各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模型源代码 2个目标文件 摘要:Java源码,网络相关,UDP  基于JAVA的UDP服务器模型源代码...

Global site tag (gtag.js) - Google Analytics