这里用的是SWT/JFace开发application中SWT自带的org.eclipse.swt.ole.win32 包可以支持内嵌OLE和ActiveX。

具体用法如下://创建一个OleFrame做为OLE(或ActiveX)的框架OleFrame oleFrame = new OleFrame(this, SWT.NONE);//创建ActiveX的容器,其中的classID是ActiveX的classid,在注册表中可以找到OleControlSite oleControl = new OleControlSite(oleFrame, SWT.NONE, “classID”);//OleAutomation类用来执行ActiveX中的方法OleAutomation oleAutomation = new OleAutomation(oleControl);//将ActiveX显示在application中oleControl.doVerb(OLE.OLEIVERB_SHOW);调用AcitveX中方法的具体过程:

1、不带参数的方法调用//获取Method Name的ID,Method Name为ActiveX中具体的方法名int[] regspid = oleAutomation.getIDsOfNames(new String[] { "Method Name" });int dispIdMember = regspid[0];//方法调用oleAutomation.invoke(dispIdMember);

2、带参数的方法调用//获取Method Name的ID,Method Name为ActiveX中具体的方法名int[] regspid = oleAutomation.getIDsOfNames(new String[] { "Method Name" });int dispIdMember = regspid[0];//设置方法的具体参数。Variant数组的长度为Method Name方法参数的个数//假设有四个参数Variant[] rgvarg = new Variant[4];rgvarg[0] = new Variant(fileID);rgvarg[1] = new Variant(itdsURL);rgvarg[2] = new Variant(idType);rgvarg[3] = new Variant(reportURL);//方法调用oleAutomation.invoke(dispIdMember, rgvarg);

调用OLE Exemple:Java程序内嵌Word应用程序package test.swt;import java.io.File;import org.eclipse.swt.SWT;import org.eclipse.swt.graphics.Point;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.ole.win32.OLE;import org.eclipse.swt.ole.win32.OleClientSite;import org.eclipse.swt.ole.win32.OleFrame;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Composite;public class ActiveXTest{private Shell sShell = null;private Button button = null;private OleClientSite clientSite;public static void main(String[] args){Display display = Display.getDefault();ActiveXTest thisClass = new ActiveXTest();thisClass.createSShell();thisClass.sShell.open();while (!thisClass.sShell.isDisposed()){        if (!display.readAndDispatch())        display.sleep();}        display.dispose();}/*** This method initializes sShell*/private void createSShell(){GridData gridData = new GridData();gridData.horizontalSpan = 2;GridLayout gridLayout = new GridLayout();gridLayout.numColumns = 3;sShell = new Shell();sShell.setText("Shell");sShell.setLayout(gridLayout);sShell.setSize(new Point(800, 600));OleFrame frame = new OleFrame(sShell, SWT.NONE);button = new Button(sShell, SWT.NONE);button.setLayoutData(gridData);button.setText("Save");button.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {public void widgetSelected(org.eclipse.swt.events.SelectionEvent e){clientSite.save(new File("d:/test.docx"),true);}});frame.setSize(800,600);clientSite = new OleClientSite(frame, SWT.NONE,"Word.Document.8");clientSite.setSize(400,400);clientSite.doVerb(OLE.OLEIVERB_SHOW);}}

SWT调用ActiveX简单总结public class SWT_ActivexUtil {private OleFrame _frame;private OleControlSite _site;private OleAutomation _auto;SWT_ActivexUtil(String activexId, OleControlSite site){if(site == null){Shell shell = new Shell();_frame = new OleFrame(shell, SWT.NONE);_site = new OleControlSite(_frame, SWT.NONE, activexId);_auto = new OleAutomation(_site);}else{_site = site;_auto = new OleAutomation(site);; }}public int getID(String name){try {int[] ids = _auto.getIDsOfNames(new String[]{name});if(ids.length>=0)return ids[0];} catch (RuntimeException e) { e.printStackTrace(); }return -1;}public Variant[] createVariants(String[] paras){Variant[] vr = new Variant[paras.length];for(int i=0;i

activex java 控件_swt java 内嵌ActiveX控件相关推荐

  1. 网页内嵌lodop控件,部分电脑一直提示未安装

    网页内嵌lodop控件,部分电脑一直提示未安装 工作中遇到部分电脑的内嵌网页用不了lodop控件 lodop 提供了 C-Lodop 支持ppapi的打印方法. 工作中遇到部分电脑的内嵌网页用不了lo ...

  2. [转载]裸写一个含内嵌IE控件的窗口

    引言 之前也做过一些含内嵌IE控件的东西,只是一直用MFC/ATL等框架,对于里面的原理其实一知半解,只有脱离它们写一遍,才算能真正懂.前不久在写一个SkyDriveClient的时候正好有一个需求, ...

  3. swt java 内嵌ActiveX控件

    这里用的是SWT/JFace开发application中SWT自带的org.eclipse.swt.ole.win32 包可以支持内嵌OLE和ActiveX. 具体用法如下: //创建一个OleFra ...

  4. MFC基于多文档框架(对话框内嵌office控件(word文档))

    office系列以简便.功能强大的特色发展为当今世界上范围最广.用户最多的办公软件,同时也深受码农的喜欢-.   MFC项目中嵌入office系列软件也是随处可见的,最早接触内嵌office软件是在几 ...

  5. java基于eclipse.swt实现内嵌浏览器

    注意事项:采用32位jdk和XULRunner1.9.2 win32版本(我曾尝试过64位都失败了,劝各位也别试了) 火狐内核才用注册XULRunner准备用IE的话就不用注册了 准备工作 1准备 e ...

  6. 谈谈你对java的理解,java是“解释执行”这句话对吗?

    谈谈你对java的理解,java是"解释执行"这句话对吗? 先科普下什么是"解释执行"? 什么是"编译执行"? • 解释执行 解释执行时高级 ...

  7. 一种内嵌P2P的wifi转红外发射神器

    IR_SW3型Wifi扇区型红外学习模块  目录 1.控制器特点...2 2.   外形及接口...3 3.   Wifi无线组网红外学习介绍...4 3.1.    Wifi工作模式...4 3.2 ...

  8. [java]谈谈你对Java平台的理解

    Java特性: 面向对象(封装,继承,多态) 平台无关性(JVM运行.class文件) 语言(泛型,Lambda) 类库(集合,并发,网络,IO/NIO) JRE(Java运行环境,JVM,类库) J ...

  9. 硅谷数模面向最新一代笔记本电脑推出业界功耗最低、采用内嵌式触摸技术的eDP定时控制器

    ANX2403满足市场对当今笔记本电脑显示器超低功耗的需求 加州圣克拉拉--(美国商业资讯)--硅谷数模半导体公司(Analogix Semiconductor, Inc.)今日宣布推出 ANX240 ...

  10. active控件和java脚本_【学习笔记】在原生javascript中使用ActiveX和插件

    什么是插件 现在的浏览器提供了大量的内置功能,但仍然有一些工作无法完成,如播放音频和视频.插件及其扩展浏览器功能就尤为重要. 插件是可下载的应用程序,可以插入到浏览器中,现在有很多不同的插件,常用的有 ...

最新文章

  1. 水晶报表printmode的ActiveX打印
  2. JavaWeb的一些理解
  3. 用mysql随机查询表a10条数据_ES简介
  4. php 时间 (年,月,星期,天,小时,秒)的查找
  5. FLV封装格式的分析
  6. 【英语学习】【医学】【解剖学】Atlas of Human Anatomy (6e) 的目录
  7. 03-postgresql报错ERROR: operator does not exist: numeric = character varyin
  8. jquery动画切换引擎插件 Velocity.js 学习01
  9. php模糊搜索 变量,自定义搜索seo变量{param}字符串
  10. ASP.NET分类信息站全站制作视频教程5(AJAX+SQLITE+生成静态HTML)
  11. LINUX创建桌面运行快捷方式
  12. 公司设备损坏了,怎么处理
  13. 写给初学者:电气制图规范和图纸识读方法
  14. URL Schemes 的发展
  15. Oracle 分页查询方法和效率分析
  16. 计算机上64位数和32位数,cad中32位和64位的区别是什么?
  17. python三原色组合白色_为何色光三原色三三相加得到白色,这其中加色原理是如何起作用的?...
  18. java 登录验证码_java实现登录验证码
  19. 医学自然语言处理相关资源整理
  20. SQL Server的简单使用

热门文章

  1. 第一章 安装和使用SQL Server 2008 R2
  2. 双机热备、集群及高可用性入门转载
  3. 如何开始在 Mac 上使用快捷方式?
  4. 利用python开发微信JS-JDK(基于python3.6)
  5. jQuery多文件上传的实例
  6. ASP.NET MVC+EF框架+EasyUI实现权限管理系列
  7. Android开发——通过扫描二维码,打开或者下载Android应用
  8. JDK、SDK、JRE、JVM概念详解
  9. JNDI配置数据库连接
  10. 草根力量:同学聚会(嘉定二中校庆60周年)