swt java 内嵌ActiveX控件 精选 原创 BUG弄潮儿 2018-01-06 20:56:24 博主文章分类:spring ©著作权 文章标签 swt java activex 文章分类 Java 后端开发 ©著作权归作者所有:来自51CTO博客作者BUG弄潮儿的原创作品,请联系作者获取转载授权,否则将追究法律责任 这里用的是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<paras.length;i++){ vr[i] = new Variant(paras[i]); } return vr; } public Variant getProperty(String prop){ int propId = getID(prop); Variant v = null; try { v = _auto.getProperty(propId); } catch (Exception e) { e.printStackTrace(); } return v; } public void setProperty(String name, String... params){ int propId = getID(name); if(propId < 0) return; if(params.length==1) _auto.setProperty(propId, new Variant(params[0])); else{ Variant[] vs = new Variant[params.length]; int i=0; for(String param:params){ vs[i] = new Variant(param); i++; } _auto.setProperty(propId, vs); } } public void setProperty(String name, Variant... params){ int propId = getID(name); if(propId < 0) return; _auto.setProperty(propId, params); } public Variant execute(String methodName, Variant... params){ int mid = getID(methodName); if(mid<0) return null; Variant rtnv; if(params == null) rtnv = _auto.invoke(mid); else rtnv = _auto.invoke(mid, params); return rtnv; } public Variant execute(String methodName){ int mid = getID(methodName); if(mid<0) return null; Variant rtnv = _auto.invoke(mid); return rtnv; } public void addEventListener(int eventID, OleListener listener){ _site.addEventListener(eventID, listener); } public void removeEventListener(int eventID, OleListener listener){ _site.removeEventListener(eventID, listener); } } 赞 收藏 评论 分享 举报 上一篇:linux下搭建git服务器 下一篇:DLL和OCX注册 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 【愚公系列】2024年01月 WPF控件专题 Label、TextBox、PasswordBox控件介绍 ? 作者简介,愚公搬代码?《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。?《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。?《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、 控件 WPF xml 【Canvas与艺术】正十二边内嵌齿轮花样表盘 用Html5/Canvas勾画正十二边内嵌齿轮花样表盘 Canvas 表盘 钟表 Qt自定义控件学习扩展QPushButton Qt自定义控件学习扩展QPushButton QPushButton swt java 内嵌activeX控件 这里用的是SWT/JFace开发application中SWT自带的org.eclipse.swt.ole.win32 包可以支持内嵌OLE和ActiveX。具体用法如下://创建一个OleFrame做为OLE(或ActiveX)的框架OleFrame oleFrame = new OleFrame(this, SWT.NONE);//创建ActiveX的容器,其中的classID是Active eclipse 方法调用 方法名 i++ 带参数 ActiveX 控件 一.容器和服务器程序容器应用程序是可以嵌入或链接对象的应用程序。Word就是容器应用程序。服务器应用程序是创建对象并且当对象被双击时,可以被启动当应用程序。Excel就是服务器应用程序。二.ActiveX控件的四种属性Stock:为每个控件提供的标准属性,如字体或颜色Ambient:围绕控件的环境属性---已被置入容器的属性。这些属性不能被更改,但控件可以使用它们调整自己的属性... ActiveX Java调用ActiveX控件 java调用ActiveX控件import com.jacob.com.*;import com.jacob.com.*;import com.jacob.activeX.*;public class DispatchTest{   java调用ActiveX控件 网页控件 activex http://tech.it168.com/a2009/0410/271/000000271815.shtml html activex控件资料 1.bho--http://baike.baidu.com/view/362533.htm2.海豚工作室--http://www.horseb.org/3.前段时间对国内银行的网银密码保护控件进行了分析--http://horseb.blog.sohu.com/169422908.html 4.bho啊。具体资料你可以参考下bho的一些详细写法其实这些都是 职场 休闲 activex JAVA.SWT/JFace: SWT高级控件之树(Tree) package com.wjc.tree; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.TreeEditor; import org.eclipse.swt.events.ModifyEvent; import& 职场 休闲 Tree SWT高级控件 activex控件签名命令 具。如果你没有,可以到以下地址下载:<br />http:// delphi ie windows 存储 服务器 python ActiveX ocx控件 # 实现Python ActiveX OCX控件## 介绍在本文中,我将向你介绍如何使用Python实现ActiveX OCX控件。ActiveX OCX控件是一种可用于Windows平台的组件技术,可以用于创建交互式和可视化的应用程序。## 整体流程下面是实现Python ActiveX OCX控件的整体流程,我们将按照以下步骤进行操作:| 步骤 | 操作 || --- | - 控件 Python python Yodi ActiveX控件使用 2009/3/15 YoDi无线网络摄像机VC++控件加载 1, 职场 控件 休闲 ActiveX Yodi access activex控件 activex控件设置 关于VC编写ActiveX控件的问题,网络上有很多方法可以借鉴,但是用C#(特指VS2005中的C#开发环境)编写ActiveX控件,并在Web中引用控件的方法,似乎难以在网络上找到详细的方法,即使有也说得不够清楚。 我在网上找到了一个方法,自己调试通过了,并且延展了涉及到的相关方面的东西,也一并总结在这个文章里, access activex控件 assembly c# interop 工作 SWT控件 http://www.eclipse.org/nebula/Nebula is a place where different Eclipse-Projectsailable on the navigation tree on the le Read More SWT eclipse Web网页中内嵌Activex的Activex插件开发 . 如今在许多流媒体视频网站(youku,tudou......)我们都会发现,观看视频之前都会有一段时间的广告,甚至在观看视频途中也会插入一些广告。实现这个效果的可以有多种技术。使用Javascript就可以实现,只需要在同一个位置分别创建两个Object,一个嵌入Flash插件,一个嵌入 WMP插件,然后切换显示这两个控件即可。 使用COM/Activex技术也可以在同一个控件中实现这样的 控件 html Javascript #import 输入框 MFC ActiveX控件与ATL ActiveX控件的比较 . 1、两者均可使用VS IDE中AppWizard来建立框架,前者使用“MFC ActiveX Control Wizard”,后者使用“ATL COM AppWizard”。2、用MFC建立的ActiveX控件 控件 c++ 扩展名 模板类 ide 发布ActiveX控件 最近我们正在研究ActiveX技术。我们使用Delphi 5创建了一个具有ActiveForm的ActiveX控件应用程序。这个控件产生一个.OCX文件。现在,我们需要把这个控件部署在服务器端,在用户浏览网页并选择安装这个控件的时候,用户的IE才会下载、安装并显示这个控件。但是我们的控件必须作数字签名以后,IE才会下载安装。问题是如何给ActiveX控件作数字签名呢?通过在网上询问朋友、查阅资料, 控件 数字签名 html 命令行 下载安装 ActiveX控件开发 VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件。(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。)ActiveX控 件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载 一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。这里控件容器就是浏览器,用户不需 控件 签名证书 时间戳 数据 html activex控件 InvokeHelper 当你调用关于activex控件中的相关方法时,你要导入此控件到程序中,此时就会在工程中生成一个关于此控件调用的一个伪调用类,其中的cpp中调用每个方法都是通过InvokeHelper调用其中的dwDispID值来定位方法的地址的!因此,可以将InvokeHelper调用理解为定位activex控件中的相关方法的一种手段!invokehelper: 用于调用OLE 的IDispatch 接口方法的一个封装方法。CWnd::InvokeHelperCall this member function to invoke the ActiveX Control method or property s 控件 ide 封装 sed C 13、ActiveX控件 基本概念: 可以把ActiveX控件看做是一个极小的服务器应用程序,它不能独立运行,必须嵌入到容器程序中,与容器一起运行。容器应用程序是可以嵌入或链接对象的 应用程序;服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序。如Word中嵌入Excel,则Word就是一个容器应用程序,而 Excel就是服务器应用程序。 ActiveX控件的后缀名可以是[.ocx][.dll]等。作为一个典型的ActiveX控件,它具有方法,属性,事件这三种特性。ActiveX底层是通过COM技术实现的。 BEGIN_DISPATCH_MAP,调度/派遣映射是MFC提供的一种映射机制,主要是为了让外部应 控件 应用程序 外部程序 添加属性 函数实现