# jacob-lingkang **Repository Path**: lingkang_top/jacob-lingkang ## Basic Information - **Project Name**: jacob-lingkang - **Description**: JACOB是一个JAVA-COM桥,允许您从Java调用COM自动化组件。它使用JNI对COM库进行本机调用。JACOB在支持32位和64位JVM的x86和x64环境上运行。此存储库是从Sourceforge 2020年9月迁移的2012年版本。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-22 - **Last Updated**: 2025-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # jacob-lingkang ## 介绍 JACOB是一个JAVA-COM桥,允许您从Java调用window的COM组件。它使用JNI对COM库进行本机调用。JACOB在支持32位和64位JVM的x86和x64环境上运行。此存储库是从Sourceforge 2020年9月迁移的2012年版本。 ## 引入依赖 `jdk8+` ```xml top.lingkang jacob-lingkang 1.0.0 ``` ## 1、入门 不需要手动加载dll,框架默认自动加载。需要注意:如果jdk是64位,则加载64位dll,否则加载32位 ```java package test01; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant; /** * @author lingkang * Create by 2025/2/22 14:20 */ public class Test01 { public static void main(String[] args) { // 必须设置线程模型 ComThread.InitSTA(); // 创建com对象,我的系统中有一个对象是 lingkang.webview2 ActiveXComponent webView = new ActiveXComponent("lingkang.webview2"); new Thread(() -> { try { // 调用方法 Thread.sleep(5000); Dispatch.call(webView, "Navigate", new Variant("https://lingkang.top")); Thread.sleep(3000); Dispatch.call(webView, "ExecuteScript", new Variant("alert('Hello from Java!')")); Thread.sleep(3000); Variant html = Dispatch.call(webView, "GetHtmlContent"); System.out.println(html.getString()); } catch (Exception e) { e.printStackTrace(); } }).start(); Dispatch.call(webView, "SetTitle", new Variant("webview")); Dispatch.call(webView, "SetIcon", new Variant("C:\\Users\\Administrator\\Desktop\\icon.ico")); Dispatch.call(webView, "Run"); // 释放线程 ComThread.Release(); } } ``` ## 2、入参是指针时 ```java // 如果入参是指针 Variant x = new Variant(1, true); // 初始值 1,byref=true 表示指针 Variant y = new Variant(2, true); // 初始值 2,byref=true 表示指针 Variant variant = Dispatch.call(webView, "Add", x, y); System.out.println("1+2=" + variant.toString()); ```