java 开发ocx控件_Java调用ocx控件以及dll

通过Java调用OCX控件有几种方法,JNI、JACOB、Jawin等

1.JNI 最直接的方式,也是最麻烦的方式,需要自己完成所有的工作,不推荐。

2.Jawin 尝试了一下,效果不错,但相对来说,其编程风格更贴近Windows,离Java有点远 。

3.Jacob 使用Jacob非常方便,Java编程风格,需要了解的知识比较少。

Jacob的使用方法:

首先--

1.在工程中导入 jacob.jar 这个包。

2.把 jacob.dll 拷贝到 jdk\bin或者C:\WINDOWS\system32目录下。

以上的两个文件您可以到网上

3.注册ocx控件

l 先把***.ocx控件放入c:\windows\system32 文件夹下

l 在cmd命令行下,输入regsvr32  ***.ocx命令进行注册

Java代码:

1.初始化

ActiveXComponent com = new ActiveXComponent("组件的ProgID") ;

Dispatch disp = com.getObject();

2.调用控件里面的方面

2.1调用无参的方法,并返回一个short值

Dispatch.call(disp, "Init").getShort();

2.2调用有一个参数的方法,并返回一个boolean值

Dispatch.call(disp,"Method",new Variant(args)).getBoolean();

调用多个参数依次类推,注意在传递参数前,将Java中的参数转换成Variant。

bug解决:

1.java.lang.UnsatisfiedLinkError: nojacob in java.library.path

原因是:没有把 jacob.dll 拷贝到 jdk\bin或者C:\WINDOWS\system32目录下

2.Exception in thread "main" com.jacob.com.ComFailException: Can't get object clsid from progid

原因是:regsvr32  ***.ocx命令进行注册后 ,获取的progid有误;

3.

Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:

At Invoke of: LoadFile

Description: 灾难性故障

at com.jacob.com.Dispatch.invokev(Native Method)

at com.jacob.com.Dispatch.invokev(Dispatch.java:858)

at com.jacob.com.Dispatch.callN(Dispatch.java:455)

at com.jacob.com.Dispatch.call(Dispatch.java:544)

at com.lv.office.AIPToTest.jacob(AIPToTest.java:24)

at com.lv.office.AIPToTest.main(AIPToTest.java:14)

原因是:

在OCX控件中,重写COleControl.IsInvokeAllowed (DISPID)方法,即在控件的CMyNameCtrl中增加一个方法

BOOL CMyNameCtrl::IsInvokeAllowed (DISPID)

{

return TRUE;

}

用这个方法的理由是:

这个错误是由ActiveX结构设计造成的。

在Ole4.0版本之前,外部程序是可以直接调用OCX中方法的。Ole4.0之后,每次调用控件中的方法,系统会自动检查是否允许调用,即运行COleControl.IsInvokeAllowed (DISPID)

该方法检查控件是否正确的初始化或者是否通过持久存储接口正确加载,如果两个条件有一个满足,即返回TRUE,否则返回FALSE。

当控件在MFC中使用时,很多细节,如初始化,都被过滤了,这样,大多数用户都不会遇到这个问题。但是,当我们从C、C++的dll中调用控件时,不满足上述条件,该方法返回FALSE,这时候再调用任何控件方法,都会出现上述异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您是不是因为java开发和维护繁琐而烦恼,目前政府机关、企业大都要求用java开发项目,本软件将彻底解决您的后顾之忧,通过本软件的自动生成功能,生成的java代码规范、全部开源,不存在用隐含的内容,全部代码逻辑开源的展示给客户,符合J2EE的MVC开发模式结合工厂模式,代码通俗易懂,只要稍微有点java常识的人就可以使用本软件来开发大型的java项目,本工作室的开发团队汲取多位资深开发人员多年的项目开发经验开发出本软件,目前使用本软件的模式开发的项目不下十个,全部是政府部门的系统。使用本软件从最基本的VO对象到JSP页面的新增、删除、修改、查询等功能一起生产,代码功能一一俱全。您只需要稍微做下界面的排版即可使用到实际的项目中了。 1、使用本软件做开发的优势: 如果您是java开发人员,一定会为每天开发中大量的重复拷贝、粘 贴代码(如分页等功能)而感到烦恼,又或为java对模式开发的繁琐关联配置而显得无可奈何时。使用本软件可以自动生成代码、建立页面关联。开发人员只要前期对业务了解清楚,数据库表设计明确,用本软件即可完成程序的编写。 如果您是经常使用Hibernate或其他插件的java开发人员,一定会为Hibernate或其他插件的配置部署问题而搞懵,这些类型的插件有个最大的问题是其核心操作均是由该插件的内部完成,对开发人员来说是个黑匣子(一般用户不会去读其开源代码),而且多个项目用同类型的插件部署到一部服务器上的时候,很容易造成版本冲突,且出现莫名其妙的问题。这些插件产生的冗余代码,也让开发人员不舒服。使用本软件生成的代码,全部开源,结构清晰,在您的开发工程中绝对不需要引用任何插件或链接库。 如果您是公司或项目负责人,一定会遇到这样的情况,公司拥有众多的java开发高手,而开发习惯也各式各样,因而对项目接手的维护人员的技术要求也相应需要提高,这样项目的投入成本自然增加,而企业的利润也相应减少。没有统一开发的模式,对项目的后期维护是一个相当痛苦的过程,何况IT界人才流动频繁,项目的交接也是常有的问题。使用本软件的自动生成的代码,符合J2EE的MVC开发模式结合工厂模式,展示、业务、逻辑、存储的分层实现,代码的编写已分门归类,重要体现了“桥归桥,路归路”的理念,这样对任何需要尽快熟悉项目的人员,一定可以在短时间内理解项目的架构思想,很快上手。 2、本软件自动生成的内容: ★ VO、POJO对象 ★ DAO接口 ★ IMPL接口实现类 ★ DAO工厂 ★ VO、POJO工厂 ★ DBC数据库连接管理类,数据库事务处理机制 ★ Servlet业务处理及其配置文件 ★ JSP调用页面(增、删、改、查),分页功能自动实现 3、特色: ☆ 一键生成,简洁使用。 ☆ 生成的代码全部开源,没有任何通过插件或链接库来做的操作。 ☆ 支持多表的多主键处理。 ☆ 支持数据事务的操作。 ☆ 生成内容可以依据客户的需要来选择性的生成。 ☆ 支持自定义查询接口的生成,用户可以定义查询条件。 ☆ 生成的jsp文件及servlet完全处理好了精度字段的精度及显示处理。 ☆ 目前支持Oracle、Sqlserver 数据库对象的自动生成代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值