SWT中ole/activex实践--操作word的一个例子
http://setting.iteye.com/blog/747295
————————————————————————————————————————————————
这几年,做了很多word/excel/ppt方面的开发,特别是office插件/vsto/oba,和各种支持activex的ole嵌入环境下的应用。
基本上,了解了office对象模型,就可以在支持ole的环境下游刃有余的使用接口进行开发了。
不过office本身是不支持ole的,一般需要一个native的“外壳”包裹住,然后再在我们开发的环境下ole这个外壳。
例如,web页面或一般环境中,使用dsoframer。SWT中使用OleClientSite。
这里讲讲OleClientSite。
windows下,SWT中(OS类)封装了绝大部分常见的win32 api。而且SWT中的组件都是系统原生的,或是组合的,
所以调用Activex的窗口并交互成为了可能(AWT可以拿到原生窗口的句柄,也能别别扭扭的实现,纯swing不是原生的,所以是拿不到的),
OleClientSite封装了调用Activex并交互的细节。
大概的方式是:传给OleClientSite一个Activex的progID,初始化一个Activex,并挂接到制定的composite上,
然后根据容器对Activex调用设置大小长宽。接着,通过一个OleAutomation封装一个Activex中的原生对象的引用指针,
然后可以用getIDsOfNames根据属性名或是方法名获取对应id(做过mfc/atl-activex的都知道这个在IDL文件中注册的id)。
然后可以调用OleAutomation的 getProperty/setProperty/invoke/invokeNoReply 等方法,获取属性或调用相应的方法。
当然返回结果可能还是原生对象,可以继续用OleAutomation包装,然后重复上面的过程。
SWT还提供了一个通用的类型包装器,用来原生的几种常见c类型和java类型的转换:Variant。(很像vb里的那个吧)
------------------------------------- 想了解的看SWT源码和com本质论去 -----------------------------------
附件是一个嵌入word,并定位word文档中的字符串的例子。
ListOLE是传递一个OleAutomation,列出所有方法的工具类。源于网上。
txt文件夹提供了word.Application 和 word.Document对象的所有com接口方法和属性。
运行Word.java,展示word文件:
点击menu1,搜索定位字符串bbbbb:
- swtword.rar (10.3 KB)
- 下载次数: 685
SWT中ole/activex实践--操作word的一个例子的更多相关文章
- C#中使用Spire.docx操作Word文档
使用docx一段时间之后,一些地方还是不方便,然后就尝试寻找一种更加简便的方法. 之前有尝试过使用Npoi操作word表格,但是太烦人了,随后放弃,然后发现免费版本的spire不错,并且在莫种程度上比 ...
- 针对Oracle数据库中SCOTT方案的多表查询一个例子
查询出每个员工的姓名.职位.月薪.所属部门名.月薪等级及其领导的姓名.职位.所属部门名.月薪等级.select e.ename 员工姓名,e.job 员工职位,e.sal 员工月薪,d.dname 员 ...
- 转发:VB程序操作word表格(文字、图片)
很多人都知道,用vb操作excel的表格非常简单,但是偏偏项目中碰到了VB操作word表格的部分,google.baidu搜爆了,都没有找到我需要的东西.到是搜索到了很多问这个问题的记录.没办法,索性 ...
- C# 操作Word 中的OLE——插入、编辑、读取 OLE
概述 OLE,Object Linking and Embedding,即对象连接与嵌入.我们在设计程序时,OLE可以用来创建复合文档,把文字.声音.图像.表格.应用程序等类型的信息组合在一起,在Wo ...
- 2.QT中操作word文档
Qt/Windows桌面版提供了ActiveQt框架,用以为Qt和ActiveX提供完美结合.ActiveQt由两个模块组成: A QAxContainer模块允许我们使用COM对象并且可以 ...
- 在C#中使用Spire.doc对word的操作总结
在C#中使用Spire.doc对word的操作总结 在最近的工程中我们要处理一些word文档.通过在网上的大量搜索,我发现大多数软件功能不是不完整就是有重复.极少数可以完全实现的word组件又要收费. ...
- C#中操作Word(1)—— word对象模型介绍
一.开发环境布置 C#中添加对Word的支持,只需添加对Microsoft.Office.Interop.Word的命名空间,如下图所示,右键点击“引用”,在弹出的“添加引用”对话框中选中COM标签页 ...
- c#中操作word文档-四、对象模型
转自:http://blog.csdn.net/ruby97/article/details/7406806 Word对象模型 (.Net Perspective) 本文主要针对在Visual St ...
- 利用POI操作不同版本号word文档中的图片以及创建word文档
我们都知道要想利用java对office操作最经常使用的技术就应该是POI了,在这里本人就不多说到底POI是什么和怎么用了. 先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写 ...
随机推荐
- SG仿真常用模块
workspace交互 配合gateway in/out,实现信号仿真与workspace的互联. 滤波器 可与FDATool同时使用,直接关联FDATool的参数,而不必输入FDATool的滤波器系 ...
- java.io.IOException: Incompatible namespaceIDs
问题描述: 在实验的时候,需要往以前的集群中添加一台datanode,在添加之前,由于在调式namenode的时候,格式化了dfs,这就导致了namenode上的namespaceID和以前集群上 ...
- Storm工作流程
为什么storm的数据来自于消息队列? Storm的解决问题的scope主要在于流计算,说流计算之前我们先简单的说下一般数据处理系统的过程.一般数据处理简单说要有几个环节:数据采集,数据计算,结果输出 ...
- vim7.4版本在windows下的配置文件及所在位置
1.vim在windows下默认首先会查找"_vimrc"文件,如果没有则会找".vimrc".造成这个原因是windows早期不支持以点开头的文件及目录.2. ...
- 使用JS生成二维码QRCode
这其实很简单,项目中使用插件即可生成,主要有两种方式: 一种是在项目中使用java生成,把图片生成到某个目录,然后在用tomcat或者nginx虚拟一下路径即可访问,这种方式我们不用,因为会在目录中生 ...
- 安装 xcode 5.1.1
https://developer.apple.com/downloads/ 切换路径xcode 路径.然并卵,不好用 http://cms.35g.tw/coding/xcode-select-%E ...
- Socket网络编程--FTP客户端(2)(Windows)
上一篇FTP客户端讲到如果制作一个简单的FTP客户端,功能实现了,但是后面我们发现了问题,就是FTP是使用明文进行操作的.对于普通情况来说就无所谓了.但有时候要安全的一点的话,就应该使用FTP的安全版 ...
- morgan日志分割
var FileStreamRotator = require('file-stream-rotator') var express = require('express') var fs = req ...
- 【转】Unity3D中脚本的执行顺序和编译顺序
支持原文,原文请戳: Unity3D中脚本的执行顺序和编译顺序 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行.与脚本有关的也就是编译和执行啦 ...
- 【C/C++】struct探索·extern "C"含义探索 ·C++与C的混合编程·C 语言高效编程的几招
本文为笔者阅读<嵌入式C精华>的摘录,推荐一下,不错的书 一.C/C++语言 struct深层探索 1.自然对界 struct是一种复合数据类型,其构成元素既可以是基本数据类型(如 int ...