作者:朱金灿

来源:http://blog.csdn.net/clever101

jacob是实现Java和COM之间互操作的一个开源中间件。网上大多的程序示例基本上是使用jacob调用微软的office组件。

《JAVA中基于JACOB的COM组件调用研究》一文中提到jacob的一个缺陷是不支持用户自定义的COM组件。实际上这种说法不太正确。jacob一般是能支持com组件。经过我的测试,一般的接口参数是数值型的没有问题。对于字符型的参数,经过测试,对于char*类型,java是不支持的,对于com的字符串类型BSTR,经过艰难的摸索,发现jacob是支持的。java不支持char*而支持BSTR,不知道是不是因为BSTR是宽字符而char*是窄字符的缘故。

下面是我写的一个测试程序:

com接口如下:

  interface IFace1 : IDispatch{[propget, id(1), helpstring("property Face1Name")] HRESULT Face1Name([out, retval] BSTR *pVal);[propput, id(1), helpstring("property Face1Name")] HRESULT Face1Name([in] BSTR newVal);[id(2), helpstring("方法Hello")] HRESULT Hello([in] BSTR left, [out,retval] BSTR* right);[id(3), helpstring("方法add")] HRESULT add([in] LONG one, [in] LONG two);};

Java调用程序如下:

import com.jacob.com.*;public static void main(String[] args) {ComThread.InitSTA();//初始化并放入内存中等待调用Dispatch printObj = null;Dispatch faceObj = null;try{printObj =new Dispatch("MultiFace.Face.1");//printObj =new Dispatch("SysAlgoNet.SysAlgoNetShell");System.out.println("获取dll对象成功!");if(null!=printObj){System.out.println(printObj.toString());String str = "hell0----"; byte[] bs = str.getBytes();// 将字符串转化为utf8String xx = new String(bs, "UTF-8");Variant v = Dispatch.call(printObj, "Hello",xx);System.out.println(v.toString());}}catch (Exception e){e.printStackTrace();}ComThread.Release();}

参考文献:

1. 通过 JACOB 实现 Java 与 COM 组件的互操作

2. java调用COM组件的几种工具

3. jacob c++里方法的类型是bstr ,为啥JAVA调用时老是出错

转载于:https://www.cnblogs.com/lanzhi/p/6470130.html

关于jacob支持BSTR类型的经验总结相关推荐

  1. mac邮件过滤器SpamSieve,支持任意类型的任意数量的电子邮件帐户

    SpamSieve for mac是适用于Mac系统的一款邮件过滤器.spamsieve mac支持任意类型的任意数量的电子邮件帐户,可以通过各种标准可靠地识别哪些消息不是垃圾邮件,了解您的合法邮件是 ...

  2. EF支持复杂类型的实现

    本节,将介绍如何手动构造复杂类型(ComplexType)以及复杂类型的简单操作. 通常,复杂类型是指那些由几个简单的类型组合而成的类型.比如:一张Customer表,其中有FristName和Las ...

  3. 实战07_SSM整合ActiveMQ支持多种类型消息

    接上一篇:企业实战06_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572147 1.S ...

  4. 实战06_SSM整合ActiveMQ支持多种类型消息

    接上一篇:企业实战05_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572129 1.S ...

  5. 实战05_SSM整合ActiveMQ支持多种类型消息

    接上一篇:实战04_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572124 1.Str ...

  6. 04_SSM整合ActiveMQ支持多种类型消息

    接上一篇:企业实战03_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572104 1.S ...

  7. 实战03_SSM整合ActiveMQ支持多种类型消息

    接上一篇:企业实战02_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572053 1.S ...

  8. 实战02_SSM整合ActiveMQ支持多种类型消息

    接上一篇:企业实战01_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100557400 Act ...

  9. 实战01_SSM整合ActiveMQ支持多种类型消息

    ActiveMQ能干什么? 主要功能涉及JMS Provider用来帮助实现高可用.高性能.高伸缩.易用的企业级面向消息服务的系统. ActiveMQ支持消息类型如下: 1.StreamMessage ...

最新文章

  1. tensorflow 进阶(三),BP神经网络之两层hidden_layer
  2. 治标更治本,如何从根源防护DDoS***
  3. Django(part18)--静态文件
  4. php编程对联,形容程序员的对联大全
  5. python统计及格不及格人数_Python一次输入多个值(列出存储信息),python,一次性,数值,列表...
  6. C#服务启动以及服务指令
  7. scala里集合排序函数的使用
  8. 通过FD耗尽实验谈谈使用HttpClient的正确姿势 1
  9. 关于 stylus的全局变量的配置
  10. php curl模拟post请求提交数据
  11. SSH使用教程( Bitvise Tunnelier+Chrome+Proxy Switchy)
  12. Duilib中caption的问题
  13. STC 串口下载电路 - CH340G或CH340N USB转串口以及漏电隔离
  14. MySql使用存储过程开发
  15. springboot集成Swagger3.0
  16. 触摸屏分屏拓展屏软件(可自定义界面)
  17. CF 2022寒假练习
  18. 高通字库芯片GT20L16S1Y驱动 0.96寸 OLED 任意显示中文
  19. JAVA 语言程序设计与数据结构 教材课本源码 和 课后习题答案
  20. oracle增删改查操作

热门文章

  1. oracle数据库常用操作语句
  2. 物联网处理器五大类型应用分析指南
  3. 1.5.2 编译java程序
  4. python邮件发送脚本
  5. tomcat 后台 getshell
  6. MIDP应用程序的属性
  7. Windows2008管理---第12章 终端服务器
  8. 详细解读Spark的数据分析引擎:Spark SQL
  9. 谨防 ActiveSupport::Cache::Store 缓存 nil 值
  10. Linux使用FlowScan