`
huangjinjin520
  • 浏览: 70894 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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是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[] { "MethodName" });
int dispIdMember = regspid[0];
//方法调用
oleAutomation.invoke(dispIdMember);
2、带参数的方法调用
//获取Method Name的ID,Method Name为ActiveX中具体的方法名
int[] regspid = oleAutomation.getIDsOfNames(new String[] { "MethodName" });
int dispIdMember = regspid[0];
//设置方法的具体参数。Variant数组的长度为MethodName方法参数的个数
//假设有四个参数
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);
}
}



  • 大小: 39.9 KB
分享到:
评论

相关推荐

    java swt自定义控件

    本文将深入探讨在Java中使用SWT进行自定义控件的开发。 ### 1. SWT概述 SWT是一个开源的Java库,它的目标是提供与原生GUI库(如Windows的Win32 API,Mac OS的Cocoa,Linux的GTK+)类似的性能和功能。SWT使用JNI...

    SWT/JFace 自定义日历控件(可绑定注册到其他控件)

    SWT自带的DateTime控件属实不好用,而且无法绑定到其他控件上。因此自己写一个日历控件用着方便,功能大致如下: 1、日历控件可自定义设置常见的几种日期格式; 2、可以绑定注册到其他控件如:文本框、按钮、标签上...

    一个SWT日期时间选择控件类

    在给定的资源中,“SWT日期时间选择控件类”是一个专门为SWT环境设计的控件,使得开发者能够轻松地在Java应用中集成日期和时间选择功能,并且支持拖放操作,提高了用户体验。 这个控件类可能是基于SWT的`Combo`或`...

    SWT日期时间选择控件.rar

    SWT(Standard Widget Toolkit)是Eclipse项目提供的一种用于构建Java GUI应用程序的开源库,它提供了丰富的用户界面组件,使得开发者能够创建出功能强大的桌面应用。在这个“SWT日期时间选择控件.rar”压缩包中,...

    Java内嵌浏览器eclipse.swt插件版

    在这个场景下,"Java内嵌浏览器eclipse.swt插件版"指的是使用SWT来实现Java应用程序中的内嵌浏览器功能。 SWT是Eclipse项目的一部分,设计用于替代Java Swing,提供更丰富的图形用户界面和更好的性能。它利用了操作...

    Java使用SWT JFreeChart控件实现的小游戏.zip

    Java使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的...

    java内嵌浏览器DJNativeSwing的jar包 以及32位和64位的SWT

    Java内嵌浏览器技术是将网页内容在Java应用程序中展示的一种方式,这在处理与Web相关的功能或者需要在桌面应用中嵌入网页时非常有用。在这个场景中,DJNativeSwing和SWT(标准窗口工具包)是两个关键的库,它们帮助...

    SWT 中嵌入Word 控件应用

    在Java中,通过JACOB(Java COM Bridge)或者其他类似的库,可以实现对ActiveX控件的支持,从而在SWT中调用Word的应用程序接口(API)。 以下是可能涉及的一些具体步骤和知识点: 1. **安装和配置JACOB库**:JACOB...

    SWT Browser(内嵌浏览器)所需SWTResourceManager Jar包

    SWT Browser(内嵌浏览器)所需SWTResourceManager Jar包

    swt java可视化编程插件

    相比Java的另一GUI库AWT和Swing,SWT提供了更好的性能和更多的控件选项。 "swt-M20070212-1330-win32-win32-x86" 这个文件名可能代表SWT的一个特定构建版本,发布日期可能是2007年2月12日,时间13:30,且是针对...

    SWT中bean与控件的数据绑定

    7. **示例代码**:通常会提供一些实际的Java代码示例,展示如何在SWT应用中实现bean与控件的数据绑定。 8. **最佳实践**:可能还会讨论一些在实际项目中使用数据绑定时需要注意的问题,以及提高效率和代码质量的...

    SWT内嵌火狐浏览器源码

    总的来说,"SWT内嵌火狐浏览器源码"是一个实用的开发资源,它可以帮助Java开发者创建具有强大网页浏览功能的应用程序,同时保持良好的跨平台兼容性和自定义能力。通过深入研究和应用这些源码,开发者可以提升自己的...

    java浏览器控件 swt.jar 下载

    java浏览器控件 swt.jar 下载

    Java64位SWT

    使用这些文件,开发者可以将SWT库导入到Eclipse项目中,通过编写Java代码来创建各种控件、布局管理器,实现窗口、菜单、按钮、文本框等GUI元素,并且可以利用64位环境的性能优势。SWT提供了丰富的API,涵盖了事件...

    java内嵌浏览器

    本代码J2SE代码,采用swt编程,实现内嵌浏览器,下载后找到项目中的两个类中的main运行即可。由于IE和Chrome内核不一样,所以采用jar包不一样,其中Chrome使用的jxbrowser,该项目中的jxbrowser已破解,放心使用。

    Java-Swing嵌入浏览器(本地浏览器和webkit浏览器-火狐内核)

    DJnative-SWT 是一个开源项目,它的目标是将Java和浏览器引擎进行桥接,使得开发者能够在Java应用中使用浏览器控件。DJnative-SWT 支持多种浏览器引擎,包括IE、Firefox、WebKit等。在本示例中,特别提到了WebKit,...

    SWT java浏览器

    SWT是一个针对Java的本机GUI库,它提供了与操作系统原生界面组件的直接交互,从而创建出更符合平台风格的窗口和控件。相比Java Swing,SWT提供了更高的性能和更好的外观与感觉。SWT支持多种操作系统,包括Windows、...

    SWT.rar_ java swt_SWT_java swt_java s_java swt

    SWT,全称为Standard Widget Toolkit,是Java编程中用于创建图形用户界面(GUI)的一种开源库。它由Eclipse基金会维护,与Java Swing并行存在,提供了与操作系统更紧密的集成,使得应用程序能够呈现出原生的外观和...

    java浏览器调用ie内核

    总结来说,Java调用IE内核主要涉及Java与ActiveX控件的交互,这一技术虽然有一定的历史背景,但在现代Web开发中已经较少使用,更多的现代解决方案倾向于使用标准Web技术或者基于Chromium的框架。理解和学习这个知识...

Global site tag (gtag.js) - Google Analytics