The JACOB Project: A JAva-COM Bridge

Jacob库:Java与COM组件交互的桥梁 本文还有配套的精品资源,点击获取 简介:Jacob(Java-COM Bridge)是一个开源Java库,它允许Java应用程序与Windows的COM组件进行交互,扩展了Java在Windows平台上的应用范围。这个工具使开发者能够调用仅支持COM接口的Windows API或第三方应用程序。Jacob库1.18.0版本包含核心的jar文件和适用于不同Windows架构的... 阅读详情

 http://danadler.com/jacob/

What Is JACOB?

JACOB is a JAVA-COM Bridge that allows you to call COM Automation components from Java. It uses JNI to make native calls into the COM and Win32 libraries. The JACOB project started in 1999 and is being actively used by thousands of developers worldwide. As an open-source project, it has benefitted from the combined experience of these users, many of whom have made modifications to the code and submitted them back for inclusion in the project.

The JACOB project has moved to Sourceforge.net. Verion 1.14.3 is now available at Sourceforge. If you are a sourceforge developer and are interested in contributing to the project, please contact the project administrators. The rest of this page is OUT OF DATE - please go to Sourceforge for current information and support.

Version 1.7 includes some new features as well as many bug fixes, memory leak plugs, as well as new models for threading and object lifetime which will make the code much more robust. See the release notes below for details.

Here is the background of how the project got started.

Release Notes and Credits

Version 1.7 Release Notes and Credits
Version 1.6 and Previous Versions Release Notes and Credits

Related Links

  • The JACOB mailing list is hosted at yahoo groups: http://groups.yahoo.com/group/jacob-project. This is the preferred way to get support for JACOB. It also includes an extensive archive. If you are doing any development with JACOB, please join the list.
  • Massimiliano Bigatti has developed Jacobgen - a generator that automatically creates JACOB code from Type Libraries. He no longer maintains it, but you can get version 0.3 here: Jacobgen-0.3 also the samples are here: Jacobgen-samples-0.3
  • Steven Lewis is developing a version of Java2Com that supports JACOB code generation. See: http://www.lordjoe.com/Java2Com/index.html.
  • To find documentation on the com.ms.com package, go to: http://www.microsoft.com/java/download/dl_sdk40.htm and at the bottom of the page is a link that says: Microsoft SDK for Java 4.0 Documentation Only. You should download that file and install it. Then, view sdkdocs.chm and look for "Microsoft Packages Reference". Hopefully, the next release of JACOB will include full javadoc (volunteers?)...

Downloads

The JACOB binary distribution (jacobBin_XX.zip) includes:

  1. jacob.jar: a JAR file for the java classes which you must add to your CLASSPATH. The package names replace com.ms with com.jacob (for example com.ms.com.Variant maps to com.jacob.com.Variant.
  2. jacob.dll: a small Win32 DLL which you must add to your PATH.
  3. samples: provided in Java source and compiled form to demonstrate various features of the product. In particular, a set of wrapper classes for Microsoft® ADO are provided as samples.

The source code is available in the JACOB source distribution (jacobSrc_XX.zip), which includes both the Java and C++ code. The source distribution is a superset of the binary one, so you don't need both.

Version 1.7

Download jacobBin_17.zip       Download jacobSrc_17.zip

Version 1.6

Download jacobBin_16.zip       Download jacobSrc_16.zip

License

This is the old JACOB License. The new license is at Sourceforge (see link above).

Usage and Documentation

Since the com.jacob classes are intended to be compatible with the Microsoft® com.ms classes, it is recommended that you download the documentation of Microsoft's SDK for Java. To find documentation on the com.ms.com package, go to: http://www.microsoft.com/java/download/dl_sdk40.htm and at the bottom of the page is a link that says: Microsoft SDK for Java 4.0 Documentation Only. You should download that file and install it. Then, view sdkdocs.chm and look for "Microsoft Packages Reference". Hopefully, the next release of JACOB will include full javadoc (volunteers?)...

The following example uses Microsoft® Excel as an Automation server:


import com.ms.com.*;
import com.ms.activeX.*;

public class DispatchTest
{
  public static void main(String[] args)
  {
    ActiveXComponent xl = new ActiveXComponent("Excel.Application");
    Object xlo = xl.getObject();
    try {
      System.out.println("version="+xl.getProperty("Version"));
      System.out.println("version="+Dispatch.get(xlo, "Version"));
      xl.setProperty("Visible", new Variant(true));
      Object workbooks = xl.getProperty("Workbooks").toDispatch();
      Object workbook = Dispatch.get(workbooks,"Add").toDispatch();
      Object sheet = Dispatch.get(workbook,"ActiveSheet").toDispatch();
      Object a1 = Dispatch.invoke(sheet, "Range", Dispatch.Get,
                                  new Object[] {"A1"},
                                  new int[1]).toDispatch();
      Object a2 = Dispatch.invoke(sheet, "Range", Dispatch.Get,
                                  new Object[] {"A2"},
                                  new int[1]).toDispatch();
      Dispatch.put(a1, "Value", "123.456");
      Dispatch.put(a2, "Formula", "=A1*2");
      System.out.println("a1 from excel:"+Dispatch.get(a1, "Value"));
      System.out.println("a2 from excel:"+Dispatch.get(a2, "Value"));
      Variant f = new Variant(false);
      Dispatch.call(workbook, "Close", f);
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      xl.invoke("Quit", new Variant[] {});
    }
  }
}

As it stands, the code will only compile with JVC (Microsoft's compiler) and only run under JVIEW (Microsoft's VM). However, if you have the JACOB distribution installed, then you can replace the two top lines with:


import com.jacob.com.*;
import com.jacob.activeX.*;


and now, you can compile this with any Java compiler and run it using any Java VM on any Win32 platform.

Frequently Asked Questions (FAQ)

Massimiliano Bigatti has compiled The JACOB FAQ based on his experience and the discussions in the JACOB yahoo group: http://groups.yahoo.com/group/jacob-project.

Implementation

The JACOB implementation of a COM Automation controller is quite different than the one used in the Microsoft® JVM . In JACOB, the com.jacob.com.Dispatch class is the basic building block. This class is used to create an instance of an Automation server. The com.jacob.activeX.ActiveXComponent class simply extends the Dispatch class to provide compatibility with the way Automation servers are created in the MS JVM. The Dispatch class's methods are all static for compatibility with the MS class.

The com.jacob.com.Dispatch constructor takes a String as an argument. If the string contains a colon (':'), then I try to interpret it as a Moniker, otherwise, I assume it's a ProgID. This means that if you want to create an object by its CLSID instead of ProgID, then you should use the clsid: Moniker as the string. I find this cleaner than manipulating GUID classes in Java.

The implementation of SafeArray's reproduces most of the functionality (and some of the quirks) of the Microsoft® implementation. This means, for example, that you have to size the array in the constructor before you fill it with data otherwise you will get an error, and the fromXXXArray methods do not work for multi-dimensional arrays (which is consistent with the Microsoft® JVM). It would be nice to improve upon this interface, but for now, I put compatibility first.

One extra feature that I couldn't resist adding, is that the com.jacob.com.Variant class is java.io.Serializable. This is accomplished in the C++ code by using the VARIANT_UserMarshal and VARIANT_UserUnmarshal calls from OAIDL.H which are used to serialize a VARIANT to a byte array and back. This feature is reportedly broken on Windows 2000...

Threads, Applets and Security

The original version of JACOB did not handle COM threading issues. This means you had to create and use a COM component in the same thread.

Threading can prove tricky in applets and servlets. For example, the following code makes sure to initialize the COM component in the AWT event thread as opposed to the main applet thread. If you try to create and initialize the ScriptControl in the init() method, the subsequent event code would throw a ComFailException. Please read about the New Threading Model in Version 1.7 to find out about the many options of handling COM threading in JACOB.


import java.awt.event.*;
import java.applet.*;

import com.jacob.com.*;
import com.jacob.activeX.*;

public class AppTest extends Applet implements ActionListener
{
  TextField in;
  TextField out;
  Button calc;
  ActiveXComponent sC = null;
  Object sControl = null;

  public void init() 
  {
    setLayout(new FlowLayout());
    add(in = new TextField("1+1", 16));
    add(out = new TextField("?", 16));
    add(calc = new Button("Calculate"));
    calc.addActionListener(this);
  }

  public void actionPerformed(ActionEvent ev) 
  {
    if (sC == null) 
    {
      // create COM component in event thread
      sC = new ActiveXComponent("ScriptControl");
      sControl = sC.getObject();
      Dispatch.put(sControl, "Language", "VBScript");
    }
    // use COM component in same thread
    Variant v = Dispatch.call(sControl, "Eval", in.getText());
    out.setText(v.toString());
  }
}

In addition to the threading issue, you have to deal with the security restrictions imposed by browsers. If you run this applet in IE5 where the jacob.jar is in your CLASSPATH, then it will work, but if the jacob.jar classes are downloaded - you get a security exception. In JDK1.1.6 appletviewer, this code works as is, but in JDK 1.2.2 appletviewer, loadLibrary fails because there is no security descriptor. So far, I couldn't get the code to run in Netscape 4.6 at all.

COM Object Lifetime

Version 1.7 introduces a new model for COM Object lifetime, please see: COM Object Lifetime in JACOB.

Wrappers

I have included a sample directory called ado. In that directrory are a set of wrappers for ADO which are source-code equivalent to those produced by the Microsoft® JACTIVEX tool. The following excerpt shows how the Connection, Command and Recordset objects interact:


  // create connection and command objects and use them
  // to get a recordset
  public static void getCommand(String con, String query)
  {
     System.out.println("Command+Connection -> Recordset");
     Connection c = new Connection();
     c.setConnectionString(con);
     c.Open();
     Command comm = new Command();
     comm.setActiveConnection(c);
     comm.setCommandType(CommandTypeEnum.adCmdText);
     comm.setCommandText(query);
     Recordset rs = comm.Execute();
     printRS(rs);
     c.Close();
  }

In this release, the wrappers are generated by hand, but please see the related links section above for some 3rd party wrapper generators for JACOB.

Events

I wanted to support events in the first release, but delegating COM events to a proper Java interface was too much work for this timeframe. So, the current implementation departs from the Microsoft® implementation. This will, hopefully, be changed in the future to follow Beans event rules.

The current model is conceptually similar to the Visual Basic WithEvents construct. Basically, I provide a class called com.jacob.com.DispatchEvents which has a constructor that takes a source object (of type com.jacob.com.Dispatch) and a target object (of any type). The source object is queried for its IConnectionPointContainer interface and I attempt to obtain an IConnectionPoint for its default source interface (which I obtain from IProvideClassInfo). At the same time, I also create a mapping of DISPID's for the default source interface to the actual method names. I then use the method names to get jmethodID handles from the target Java object. All event methods currently must have the same signature: one argument which is a Java array of Variants, and a void return type.

The dependency on IProvideClassInfo means that the Type Library for the component must exist if you want to support events. The following example shows how to use the Microsoft® ScriptControl as an in-proc server, and catch the Error and Timeout events which it generates:

Version 1.7 also includes code to read the type library directly from the progid. This makes it possible to work with all the Microsoft Office application events, as well as IE5 events. For an example see the samples/test/IETest.java example.


import com.jacob.com.*;

public class ScriptTest
{
  public static void main(String args[])
  {
    System.runFinalizersOnExit(true);

    String lang = "VBScript";
    Dispatch sControl = new Dispatch("ScriptControl");
    Dispatch.put(sControl, "Language", lang);
    Dispatch.put(sControl, "AllowUI", new Variant(true));
    // instantiate an event target object
    errEvents te = new errEvents();
    // hook it up to the sControl source
    DispatchEvents de = new DispatchEvents(sControl, te);
    // run an expression from the command line
    System.out.println("eval("+args[0]+") = "+ 
                       Dispatch.call(sControl, "Eval", args[0]));
  }
}

// This is the event interface
class errEvents {
  public void Error(Variant[] args)
  {
    System.out.println("java callback for error!");
  }
  public void Timeout(Variant[] args)
  {
    System.out.println("java callback for timeout!");
  }
}


>java ScriptTest 'Now()'
eval(Now()) = 10/5/99 11:07:43 AM

>java ScriptTest '()Now()'
java callback for error!
eval(()Now()) = null

Non-Default Interfaces

Once you have a Dispatch object, you can navigate to the other interfaces of a COM object by calling QueryInterafce. The argument is an IID string in the format: "{9BF24410-B2E0-11D4-A695-00104BFF3241}". You typically get this string from the idl file (it's called uuid in there). Any interface you try to use must be derived from IDispatch. The following example shows how this can be used. The full example (including the ATL COM object) is in the samples\test\atl directory.


import com.jacob.com.*;
import com.jacob.activeX.*;

class MultiFace
{
  public static void main(String[] args)
  {
    System.runFinalizersOnExit(true);

    ActiveXComponent mf = new ActiveXComponent("MultiFace.Face");
    try {
      // I am now dealing with the default interface (IFace1)
      Dispatch.put(mf, "Face1Name", new Variant("Hello Face1"));
      System.out.println(Dispatch.get(mf, "Face1Name"));

      // get to IFace2 through the IID
      Dispatch f2 = mf.QueryInterface("{9BF24410-B2E0-11D4-A695-00104BFF3241}");
      // I am now dealing with IFace2
      Dispatch.put(f2, "Face2Nam", new Variant("Hello Face2"));
      System.out.println(Dispatch.get(f2, "Face2Nam"));

      // get to IFace3 through the IID
      Dispatch f3 = mf.QueryInterface("{9BF24411-B2E0-11D4-A695-00104BFF3241}");
      // I am now dealing with IFace3
      Dispatch.put(f3, "Face3Name", new Variant("Hello Face3"));
      System.out.println(Dispatch.get(f3, "Face3Name"));

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Limitations

  • Since we do not modify the underlying VM, JACOB cannot do any magic with casting. So, for the moment, it does not support any form of custom interfaces.
  • The event model (Java catching COM events) in this release is not compatible with either the Beans model or the WFC model. The current model allows you to pass in any Java object as a COM event listener and its methods are invoked by reflection.
  • This release does not include a reverse bridge. Therefore, you can't wrap complex Java objects and send them into COM method calls. All inputs must resolve to Variant objects. My theory was that a reverse bridge requires much more code, and so should reside in a separate DLL. I have the code for a skeleton for a reverse bridge - if anyone is interested in working on it. I see a reverse bridge as lower priority, because Sun already provides one as part of the Java PLUG-IN.
  • This release does not provide any support for hosting graphical ActiveX controls inside of Java components.
  • Testing: this release has not been tested as rigorously as I would like. Please report or fix any bugs you find!
  • Platform and VM Testing: I have only tested on NT4SP5 with Sun's JDK 1.1.6 and JDK 1.2.2 VM's and Microsoft's Java VM (Build 3182).

Support

The JACOB mailing list WAS hosted at yahoo groups: http://groups.yahoo.com/group/jacob-project. However, due to severe limitations of the yahoo groups software it was getting inordinate amounts of spam and has been DISCONTINUED. Please use the SourceForge link at the top of this page for any support requests.

Contributions

You are encouraged to suggest modifications to the code of the JACOB project. Please refer to the SourceForge link at the top of this page and follow the submission rules of SourceForge.

 

Jacob工具包:Java与Windows COM组件交互指南 本文还有配套的精品资源,点击获取 简介:Jacob(Java COM Bridge)是一个允许Java应用程序与Windows上的COM组件进行交互的Java库。通过核心组件 jacob.dll 和 jacob.jar ,Jacob解决了Java与Office应用等第三方软件通信的问题。文章详细介绍了Jacob的安装、配置和使用方法,并通过操作W... 阅读详情

相关推荐

JACOB源码深度解析:Java与COM的桥接技术

在探讨Java与COM组件之间交互的复杂性时,JACOB库成为了解决方案的关键。本章将引导读者从JACOB的定义开始,介绍它作为一种桥接工具的主要功能。JACOB(Java COM Bridge)是一个开源项目,它允许Java代码通过JNI(Java本地接口)与Windows平台上的COM组件进行交互。JACOB利用JNI的能力,将Java的跨平台特性与Windows下强大的COM组件系统结合起来,使得Java开发者能够轻松访问和操作COM对象。

weixin_33506815的博客 518

Java com bridge 操作Word Excel Outlook.

                  JACOB是一个 JAVA到微软的COM接口的桥梁。使用JACOB允许任何JVM访问COM对象,从而使JAVA应用程序能够调用COM对象。如果你要对 MS Word、Excel 进行处理,JACOB 是一个好的选择。JACOB目前已经成为sourceforge(http://sourceforge.net/projects/jacob- project/)的一个开源项目,现在最新的版本是jacob-1.15-M4。                  把ja

kunlamp的专栏 2391

JAVA-COM Bridge 中间件

Jacob 是 JAVA-COM Bridge的缩写,是一个中间件,能够提供自动化访问MS系统下COM组件和Win32 libraries的功能。 • MS系统提供的COM组件 COM组件 对象ID MS Word Word.Application MS Excel Excel.Application MS Powerpoint Powerpoint.Application MS IE InternetExplore.Application

Java-COM Bridge

没出现webservice之前用的? 转载于:https://www.cnblogs.com/hshy/p/10752093.html

weixin_30678821的博客 1023

jacob语音朗读(包含API)

jacob-1.17-M2 语音朗读jar 包和开发文档 jacob-1.17-M2 语音朗读jar 包和开发文档

【NAS for PVE _04】安装TrueNAS

前篇说到如何调试 Proxmox VE 8.2 为安装虚拟机做准备,本篇主要讲述如何在 Proxmox VE 上安装 TrueNAS 系统,并开启NFS供其他系统挂载使用官网下载好TrueNAS系统镜像。

村口王师傅。 6144

搭建Java与Windows的桥梁:一探Java COM Bridge(JACOB)的魅力

在跨平台开发的世界里,Java以其卓越的兼容性和可移植性独树一帜。然而,在涉及到Microsoft Windows原生资源或COM组件时,Java开发者往往需要面临额外的挑战。为了解决这一难题,Java COM Bridge(简称JACOB),这个开源项目应运而生。 JACOB是一个强大的Java库,它巧妙地利用自定义DLL通过JNI(Java Native Interface)进行通信,从而让...

gitblog_00885的博客 1183

奥比中光Dabai深度相机SDK在Ubuntu22.04的兼容性安装指南

本文详细指导如何在Ubuntu22.04系统上安装奥比中光Dabai深度相机的SDK。针对新旧版本不兼容的核心问题,重点推荐使用经过验证的v1.10.18版本SDK,并提供了从系统依赖检查、SDK下载安装、Python环境配置到编译测试的完整步骤,帮助用户成功解决安装难题并实现相机驱动。

j2k3l4的博客 1000

java.com java you_The JACOB Project: A JAva-COM Bridge Now you can call COM Automation from any ...

What Is JACOB?JACOB is a JAVA-COM Bridge that allows you to call COM Automation components from Java. It uses JNI to make native calls into the COM and Win32 libraries. The JACOB project started in 19...

weixin_30086969的博客 5736

VS2015与QT界面开发中解决‘ui_xxx.h‘文件类名不一致导致的编译错误

本文详细解析了在VS2015与QT界面开发中,因.ui文件顶层部件objectName与生成类名不一致导致'ui_xxx.h'文件出现'不完整的类型'编译错误的根本原因。通过分步排查,指导开发者统一Qt设计师对象名、自动生成文件类名及代码引用名,并提供强制重新编译UI文件、清理中间文件等解决方案,有效解决此类常见编译问题。

weixin_29009339的博客 248

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标 1 超级指标 指标公式:买卖提示非常明显(适合通达信) 指标源码如下: M:3 100 60 N 3 100 30 散户线: 100*(HHV(HIGH,M)-CLOSE)/(HHV(HIGH,M)-LLV(LOW,M));RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,5,1); D:=SMA(K,3,1); J:=3*K-2*D;主力

m0_60244077的博客 3万+

【亲测免费】 JACOB项目的安装和使用教程

JACOB项目的源码仓库包含了以下主要目录: 1. **docs** - 存放项目相关的文档。 2. **lib** - 包含了不同平台(如32位和64位)的Jacob库DLL文件。 3. **samples** - 提供了一些示例代码以展示如何使用Jacob。 4. **src** - 项目的源代码,包括Java类和JNI接口定义。 5. **vstudio/jacob** - Visual ...

gitblog_00405的博客 1733

深入解析TOM模块的PWM输出与ADC触发机制:从配置到DMA数据传输

本文深入解析了TOM模块在嵌入式系统中的核心应用,详细阐述了如何配置其PWM输出功能,并实现与ADC模块的硬件触发同步。重点介绍了通过DMA机制高效传输ADC采样数据的完整流程,涵盖时钟配置、工作模式选择、引脚映射及联调实战,为电机控制、数字电源等实时系统提供了一套硬件自动化的高效解决方案。

weixin_29227585的博客 368

JNI开发之参考资料

IBM:弥补和 COM 的缝隙——发现 Bridge2Java 如何帮助扩展 Java 代码的范围http://www-128.ibm.com/developerworks/cn/java/j-bridge/index.htmlJava进阶:JNI使用技巧点滴http://www.52z.com/info/ArticleView/2004-10-7/Article_View_2561.HtmThe

1385

【ArcGIS Pro微课1000例】0047:深度学习--棕榈树提取全流程

对汤加科洛瓦伊种植园每棵棕榈树的健康状况进行清查和评估,这需要花费大量的时间和劳动力。为简化此过程,将在 ArcGIS Pro 中使用深度学习模型来识别树木,然后根据植被绿度的测量值计算其健康状况。第一步是找到显示汤加科洛瓦伊的影像,该影像具有足够精细的空间和光谱分辨率来识别树木。获得此影像后,将创建训练样本并将其转换为可供深度学习模型使用的格式。为了让模型识别出它的查找任务,需要定义棕榈树的影像,以便识别相似的像素和树木大小。

智慧空间实验室 2207

已经下载了WSL2但Docker依然显示版本过旧无法使用,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2908

JNI的小结

目前java与dll交互的技术主要有3种:jni,jawin和jacob。Jni(Java Native Interface)是sun提供的java与系统中的原生方法交互的技术(在windows\linux系统中,实现java与native method互调)。目前只能由c/c++实现。后两个都是sourceforge上的开源项目,同时也都是基于jni技术的windows系统上的一个应用库

叶落伤城的专栏 561

基于改进Unet的多场景水果图像分割与分类研究

本文针对复杂场景下的水果图像分割问题,提出了一种改进Unet模型。通过构建包含8类水果、3种成熟度及多种干扰场景的数据集,采用ResNet50与MobileNetV3作为骨干网络,并在跳跃连接层集成CBAM注意力机制。实验表明,改进模型在测试集上达到91.6%的mIoU,推理速度提升23%,特别在重叠水果和低光照场景表现突出。研究为农业视觉检测提供了有效解决方案。

AI的内部世界的博客 304

Java COM bridge

        If you are looking to integrate Java with COM you have several options: Use The JACOB Project, which is an open-source Java-COM bridge based on JNI. Use The Microsoft Java VM.

生而为人,幸而为人 1542

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java通过jacob操作word的一些实践

前言 JACOB(java -com bridge)是一个 JAVA到微软的COM接口的桥梁。使用JACOB允许任何JVM访问COM对象,从而使JAVA应用程序能够调用COM对象。关于JACOB的很多基础知识网上也是很多文章介绍,我也是根据这些资料进行开发的。粘上两个我保存的文章 jacob的使用方法总结 java操作word文档(jacob) 本文主要是讲解当遇到网上查找不到的word方法时候,需要怎么处理,以及自己使用过程中的注意事项。 正文 1、网上关于JACOB的介绍很多,但是都是基础功能没有官方

l13020227067的博客 1197

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java调用com组件操作word

一、准备工作   先了解一下概念,JACOB 就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的。这是一个开始于 1999年的开源项目的成果,有很多使用者对该项目进行了修改,做出了自己的贡献。     Jacob下载地址:http://sourceforge.net/project/showf...

ChocooM 357

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【亲测免费】 JACOB(JAVA-COM桥接)项目教程

[JACOB](https://github.com/freemansoft/jacob-project) 是一个JAVA-COM桥接库,允许Java应用程序调用Windows平台上的DLL或COM组件。它通过自定义的DLL文件,利用JNI(Java Native Interface)使Java类能够与底层Windows库通信,从而免去开发者编写自定义JNI代码的复杂性。JACOB支持在x86和x...

gitblog_00375的博客 1024

jacob操作office分享

现在的项目中操作word文件比较多,word文件的加密解密,转换为各种格式,插入图片,添加水印、html转word等等各种东西,大家也都知道,java语言是不能直接操作word或者excel的,不像C#,可以调用VBA的类来直接操作office。      目前java也有一些操作office的开源框架,比如poi,这个没怎么研究过,我估摸着它是通过解析office的xml文档模型来操作off

ITNoobie的博客 1586

Jacob简介

一、Jacob 介绍Jacob 是 JAVA-COM Bridge的缩写,是一个中间件,能够提供自动化访问MS系统下COM组件和Win32 libraries的功能。

Seven_Nee的专栏 5834

Java注册COM组件

在Java中注册COM组件通常涉及到使用Java COM桥(也称为JACOB,Java-COM Bridge)来创建和注册COM组件。JACOB是一个允许Java代码创建和使用COM对象的库。

a876106354的博客 3008

Jacob 实现语音播报

JACOB 就是 JAVA-COM Bridge的缩写,语音播报。demo 将jacob-1.14.3-x86.dll或放入32位JDK的bin目录下 或将jacob-1.14.3-x64.dll或放入64位JDK的bin目录下 百度网盘资源链接:https://pan.baidu.com/s/1eRsEubrfFJrMm4oyB3BrQQ 提 取 码:v77k 依赖: <!-- ht...

qq_44836497的博客 934
上一篇: 关于Apache Portable Runtime and Tomcat
下一篇: 对九个超级程序员的采访
wang12
博客等级 码龄24年 39粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值