# Jscm-Core-FrameWork
**Repository Path**: SnailcatMall/Jscm-Core-FrameWork
## Basic Information
- **Project Name**: Jscm-Core-FrameWork
- **Description**: Jscm框架是一个基于Java JNI的Windows系统操作框架,提供了丰富的Windows API封装,包括窗口操作、进程线程管理、内存操作、注册表操作、热键驱动等功能。本框架集成了三大模块进行处理,参考了精易模块、超级模块、乐易模块的设计思想,为Java开发者提供了强大的Windows系统底层操作能力。
框架支持X86和X64平台,包含DD键鼠驱动、幽灵键鼠驱动等硬件抽象层功能,同时提供了
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://www.snailcatmall.com/
- **GVP Project**: No
## Statistics
- **Stars**: 17
- **Forks**: 3
- **Created**: 2026-02-21
- **Last Updated**: 2026-09-14
## Categories & Tags
**Categories**: utils
**Tags**: Jscm-Core框架, JNI开源框架
## README
# Jscm-Core — Java 系统级原生操作框架(JNI 封装库)
> **项目名称**:`Jscm-Core` 框架
> **GroupID**:`com.scm` · **ArtifactID**:`Jscm-Core` · **Version**:`1.0-SNAPSHOT`
> **JDK**:Java 8+ · **平台**:Windows 7+(x86 / x64) · **构建**:Maven
> **技术路线**:**JNI(Java Native Interface)**,**不是 JNA**
---
## ⚠️ 重要说明:本框架基于 JNI,非 JNA
Jscm-Core 使用 **Java Native Interface(JNI)** 技术,通过配套的原生动态链接库 `Jscm.dll`(C/C++ 编写)暴露底层能力,**不使用 JNA(Java Native Access)**。两者的关键区别如下,请勿混淆:
| 维度 | JNI(本项目) | JNA |
|:---|:---|:---|
| 调用方式 | `native` 方法声明 + `System.load("Jscm.dll")` | 运行时反射 + `Library` 接口映射 |
| 原生入口 | `ModuleOperationUtilsJNI` 集中声明全部 `native` 方法 | 通过 `Native.load()` 动态代理 |
| 性能 | 静态绑定、直接调用,开销更低 | 运行时动态映射,略有额外开销 |
| 结构体映射 | 手工维护 `Tag*` / `*_struct` Java 类,字段顺序与 C 结构体一一对应 | 依赖 `Structure` 运行时计算内存布局 |
| 回调 | 继承 `com.scm.all.pfunc.*` 空实现接口(虚方法回调) | `Callback` 动态代理 |
> 因此本项目所有 `pfunc` 回调类、`struct` 结构体、`ModuleOperationUtilsJNI` 方法均服务于 **JNI** 静态绑定,编写代码时请勿套用 JNA 的 `Structure`/`Native.load` 用法。
---
## 项目规模一览
| 指标 | 数值 |
|:---|:---|
| Java 源文件数 | **300+** |
| 总代码行数 | **~110,000+** |
| JNI `native` 方法数 | **4,963** |
| XCGUI 封装方法数 | **1,648**(29 个类) |
| JadeView 封装方法数 | **98+**(WebView2 引擎) |
| Report_Table 封装方法数 | **2,842**(26 个类) |
| Photoshop 自动化方法数 | **582** |
| UI 组件引擎(component) | **97 个 `XC*ComponentUI` 组件** |
| 回调接口(pfunc) | **47 个**(含 `Nonvirtual` 子包) |
| AI 集成 | Ollama / Coze / RunningHub / 云端 LLM 四大平台 |
| 现代 Web 服务 | Netty HTTP/WebSocket + RBAC 鉴权 + 阿里云 OSS |
---
## 目录
- [一、项目简介](#一项目简介)
- [二、GUI 界面预览](#二gui-界面预览)
- [三、功能特性与优势](#三功能特性与优势)
- [四、技术栈与依赖](#四技术栈与依赖)
- [五、系统架构](#五系统架构)
- [六、快速开始](#六快速开始)
- [七、模块详解](#七模块详解)
- [八、数据结构、枚举与回调体系](#八数据结构枚举与回调体系)
- [九、构建与部署](#九构建与部署)
- [十、技能库(Skills)使用与提问指南](#十技能库skills使用与提问指南)
- [十一、许可](#十一许可)
---
## 一、项目简介
Jscm-Core 是一个 **Java Native Interface(JNI)封装框架**,通过配套的 `Jscm.dll` 原生动态链接库,将 Windows 系统级 API、XCGUI 炫彩界面库、JadeView WebView2 引擎、锐浪报表 Grid++、Adobe Photoshop COM 自动化等底层能力,暴露为 Java 可直接调用的 `native` 静态方法集合。同时内置了纯 Java 实现的现代应用层能力:AI 大模型客户端、Netty 高性能 HTTP/WebSocket 服务、RBAC 鉴权、对象存储、邮件收发、拼多多云打印等,形成「底层原生 + 高层服务」的一体化开发框架。
### 核心能力一览
| 领域 | 技术底层 | 封装规模 |
|:---|:---|:---|
| Windows 系统 API | Win32 API(窗口/进程/线程/内存/注册表/句柄) | 400+ |
| XCGUI 炫彩界面库 | Direct2D 渲染引擎,29 个控件类 | 1,648 |
| JadeView WebView2 | Microsoft Edge WebView2 引擎 | 98+ |
| 锐浪报表 Grid++ | COM 报表引擎,26 个功能类 | 2,842 |
| Adobe Photoshop | PowerShell COM → JavaScript 自动化 | 582 |
| AI 集成 | Ollama / Coze / RunningHub / 云端 LLM | 50+ |
| 现代 Web 服务 | Netty HTTP 静态服务器 + WebSocket + 分片传输 | 80+ |
| 安全鉴权 | Sa-Token + RBAC + BCrypt + Druid 连接池 | 20+ |
| 对象存储 | 阿里云 OSS(上传/下载/分片/进度) | 30+ |
| 邮件收发 | SMTP / IMAP / 群发 / 转发 / 重试 | 20+ |
| 拼多多云打印 | WebSocket 协议封装 | 15+ |
| 键鼠硬件驱动 | DD / Ghost / Md 三种驱动方案 | 100+ |
| 内存调试 | 内存读写 / 特征码搜索 / 硬件断点 / API Hook | 80+ |
| 反汇编引擎 | CapStone 反汇编 | 10+ |
| UI 组件引擎 | 97 个链式组件(基础/表单/数据/反馈/导航/图表等) | 97 类 |
| 数据结构 & 枚举 | Tag 结构体 / 枚举常量 / 回调接口 | 150+ |
---
## 二、GUI 界面预览
以下截图展示了框架的实际界面效果,来源于项目内置示例程序 `ComponentShowcase`(JSCM 全组件展示,9 大分类)与 JadeView WebView2 桌面应用。
### 2.1 XCGUI 炫彩组件展示(ComponentShowcase)
`ComponentShowcase` 以顶部选项卡 + 分类面板的形式,集中展示了框架全部 97 个链式组件的真实渲染效果:
| 分类 | 说明 | 预览 |
|:---|:---|:---|
| 基础控件 | 按钮 / 单选 / 复选 / 开关 / 滑块 / 评分等 |  |
| 表单输入 | 输入框 / 数字输入 / 下拉 / 级联 / 日期选择 / 上传等 |  |
| 数据展示 | 表格 / 列表 / 树 / 卡片 / 描述列表 / 时间轴 / 日历 / 进度等 |  |
| 反馈交互 | 消息 / 通知 / 对话框 / 抽屉 / 加载 / 气泡 / 弹出确认等 |  |
| 导航 | 页签 / 菜单 / 面包屑 / 侧边菜单 / 锚点 / 步骤条等 |  |
| 数据容器 | 表格 / 列表 / 树 / 穿梭框 / 无限滚动等 |  |
| 图表 | 折线 / 柱状 / 饼图 / 漏斗 / 仪表盘 / 热力图 / K线 / 散点 / 金融图 |  |
| 图标库 | 内置 200+ SVG 图标 |  |
| 头部菜单 | 头部导航 / 下拉菜单 / 菜单栏 |  |
### 2.2 JadeView WebView2 桌面应用
基于 Chromium 内核的 HTML/CSS/JS 桌面应用,支持无边框、透明、圆角等现代 UI 能力:
| 场景 | 预览 |
|:---|:---|
| JadeView 桌面应用窗口 |  |
| JadeView 交互效果 |  |
---
## 三、功能特性与优势
### 3.1 底层原生能力(JNI)
- **全量 Win32 API 封装**:窗口、进程、线程、内存、注册表、句柄、模块枚举等系统级操作均可直接以 `native` 静态方法调用。
- **双架构自适应**:通过 `sun.arch.data.model` 自动检测 32/64 位,自动加载对应的 `Jscm.dll`,API 签名按 `long`/`int` 地址宽度对称设计。
- **硬件级键鼠模拟**:DD / Ghost / Md 三种驱动方案,支持绝对/相对移动、按键、滚轮、文本输入,可绕过应用层检测。
- **内存调试三件套**:跨进程内存读写 + 特征码搜索、硬件断点(DR0-DR3)、API Hook,覆盖逆向与自动化场景。
- **CapStone 反汇编**:内嵌反汇编引擎,支持 x86/x64 指令流解析。
### 3.2 界面与报表
- **XCGUI 炫彩界面库**:基于 Direct2D 硬件加速,29 个控件类、1,648 个方法,提供现代扁平化 / 圆角 / 透明窗口等 UI 能力。
- **JadeView WebView2**:基于 Chromium 内核,支持透明窗口、无边框、自定义 UA、预加载 JS、CORS 白名单、IPC 跨进程通信,可用 HTML/CSS/JS 构建桌面应用界面。
- **锐浪报表 Grid++**:COM 报表引擎完整封装,支持设计器、打印预览、PDF/Excel/Word/HTML 导出、图表、条形码、交叉表等企业级报表能力。
### 3.3 现代应用服务层(纯 Java)
- **Netty 高性能服务**:内置静态文件 HTTP 服务器、WebSocket 服务器(文本/二进制/文件分片)、断点续传、分片传输协议(`ChunkedTransfer`)、代理路由、压测工具(`PressureTest`)。
- **RBAC 安全鉴权**:基于 Sa-Token,内置登录限流防暴力破解、BCrypt 密码散列、MySQL 用户数据源(Druid 连接池)、角色权限接口抽象、验证码。
- **对象存储**:阿里云 OSS 客户端单例封装,支持上传/下载、分片、进度回调、预签名 URL、缩略图,配置写入统一配置中心。
- **邮件收发**:SMTP 发信(含反垃圾邮件头、群发连接复用、失败追踪、SMTP 返回码智能重试)、IMAP 收信(递归 MIME 解析、心跳保活、自动重连)、转发功能。
- **拼多多云打印**:完整封装拼多多打印组件 WebSocket 协议(打印机管理 / 打印任务 / 任务状态查询 / 结果通知),提供链式 Builder 数据模型。
- **AI 大模型集成**:本地 Ollama、云端 LLM、Coze 工作流、RunningHub 平台四大 AI 能力,支持流式输出、多模态(图片)、技能系统。
### 3.4 UI 组件引擎(纯 Java · 无 Swing 依赖)
- 97 个 `XC*ComponentUI` 链式组件,覆盖基础控件、表单输入、数据展示、反馈交互、导航、数据容器、图表、图标库等完整分类。
- 内置全局事件分发器(`XCUIEventDispatcher`)、全局资源回收系统(`XCUIResourceManager`,类似 Java GC)、主题令牌(`ElementTheme`)、动画引擎(`AnimationEngine`/`Easing`)。
- 流光边框动画引擎、图像编辑工具(贴纸/透视变换)等高级工具。
### 3.5 架构优势
- **统一日志**:全项目基于 slf4j + logback,统一日志规范。
- **链式 / Fluent API**:AI 工具包、JadeViewApp、打印数据模型、组件 Builder 等均采用 Builder + 链式调用,代码简洁易读。
- **线程安全**:并发控制使用 `CopyOnWriteArrayList`、`ConcurrentHashMap`、`AtomicLong` 等,避免竞态。
- **资源自动管理**:ShutdownHook 自动清理、`AutoCloseable` 释放连接池、`XCUIResourceManager` 自动回收句柄,避免资源泄漏。
- **泛型化与类型安全**:消除 raw type 与 unchecked cast,编译期类型检查更严格。
---
## 四、技术栈与依赖
| 依赖 | 版本 | 用途 |
|:---|:---|:---|
| `commons-lang3` | 3.12.0 | 字符串/对象通用工具 |
| `javax.mail` | 1.6.2 | SMTP/IMAP 邮件收发 |
| `junit` | 4.13.2 | 单元测试 |
| `slf4j` + `logback` | 内置 | 统一日志 |
| `fastjson2` | 内置 | JSON 序列化(snake_case 映射) |
| `OkHttp` | 内置 | HTTP/WebSocket 客户端(拼多多打印) |
| `Netty` | 内置 | HTTP/WebSocket 服务器与客户端 |
| `Sa-Token` | 内置 | RBAC 鉴权 |
| `Druid` | 内置 | MySQL 连接池 |
| `aliyun-sdk-oss` | 内置 | 阿里云对象存储 |
| `lucene-core` 等 | 8.11.4 | 全文检索(Java 8 最后兼容版) |
> 原生依赖(JNI 动态库):`Jscm.dll` / `grdes6x64.dll` / `ghost_x64.dll` / `md_x64.dll` / `jawt.dll` 等,位于 `src/main/resources/init_/x64` 与 `x86`。
---
## 五、系统架构
```
┌─────────────────────────┐
│ App.java (入口层) │
└────────────┬────────────┘
│ 调用
┌──────────────────────────┼──────────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌───────────────────┐ ┌──────────────────┐
│ AI 集成层 │ │ 业务组件层 │ │ 高级工具层 │
│ ClaudeCode │ │ 97 个 XC*组件 │ │ PhotoshopTool │
│ CozeAI │ │ XCChainedUI │ │ PowerShell │
│ RunNingHubAI │ │ AnimationEngine │ │ EMailUtils │
│ CloudLLM │ │ XCUIResourceMgr │ │ PddPrintUtils │
└────────┬────────┘ │ XCUIEventDispatch│ │ CaptchaGenerator│
│ └────────┬──────────┘ │ CapStone │
▼ ▼ └────────┬─────────┘
┌──────────────────────────────────────────────────────────────────────┐
│ 服务层 (Netty / 鉴权 / 存储) │
│ NettyDirectoryServer NettyHttpClient SaTokenUtil(RBAC) │
│ JadeViewApp(门面) JadeViewOss ChunkedTransfer(分片) │
└─────────────────────────────────┬────────────────────────────────────┘
│ 调用
▼
┌──────────────────────────────────────────────────────────────────────┐
│ 高级封装层 (High-Level Wrappers) │
│ XC_GUI (29类) JadeViewGUI (WebView2) Report_Table (26类) │
│ WindowOperationUtils ProcessAndThreadUtils SystemUtils │
└─────────────────────────────────┬────────────────────────────────────┘
│ 调用
▼
┌──────────────────────────────────────────────────────────────────────┐
│ 基础设施层 (Infrastructure) │
│ ModuleOperationUtilsJNI (4,963 native) pfunc(47接口) struct(枚举) │
└─────────────────────────────────┬────────────────────────────────────┘
│ System.load("Jscm.dll")
▼
┌──────────────────────────────────────────────────────────────────────┐
│ Jscm.dll (原生 C/C++ 动态链接库) │
│ XCGUI 引擎 · JadeView · Grid++ · Win32 API · CapStone · 键鼠驱动 │
└──────────────────────────────────────────────────────────────────────┘
```
### 完整目录结构
```
src/main/java/
│
├── App.java # 应用入口 & 使用示例
├── ComponentShowcase.java # JSCM 全组件展示(97 组件,9 大分类)
├── META-INF/MANIFEST.MF
│
└── com/scm/
├── all/ # ════════ 平台无关模块 ════════
│ │
│ ├── AI/ # AI 集成模块
│ │ ├── ClaudeCode/ # 本地 Ollama 大模型工具包
│ │ │ ├── ClaudeCodeToolkit.java # 主工具入口(链式 API)
│ │ │ ├── client/OllamaClient.java # Ollama HTTP 客户端
│ │ │ ├── cloud/CloudLLMClient.java # 云端 LLM 客户端
│ │ │ ├── cloud/CloudLLMConfig.java # 云端配置(Provider/Presets)
│ │ │ ├── config/ConfigManager.java # 配置管理器(.env)
│ │ │ ├── config/OllamaConfig.java # Ollama 配置(Builder)
│ │ │ ├── model/ # ChatRequest/ChatResponse/Message
│ │ │ ├── skills/ # Skill/SkillManager/CloudReviewSkill
│ │ │ ├── agent/ # AgentLoop(ReAct 工具调用)
│ │ │ ├── tool/ # 内置工具(fs/shell/web/todo)
│ │ │ └── utils/ # ImageProcessor/UrlHandler
│ │ ├── CozeAI/ # Coze 工作流平台
│ │ └── RunNingHubAI/ # RunningHub AI 平台
│ │
│ ├── component/ # UI 组件引擎(纯 Java,97 个组件)
│ │ ├── XCChainedUI.java # ★ 链式 API 唯一入口
│ │ ├── XCUIEventDispatcher.java # 全局元素事件分发器
│ │ ├── XCUIResourceManager.java # 全局资源回收系统(GC)
│ │ ├── XC*ComponentUI.java # 97 个组件实现
│ │ ├── AnimationEngine.java # 通用动画引擎
│ │ ├── anim/ # Anim/AnimateCSS/CubicBezier/Easing/Keyframes
│ │ ├── chart/ # ChartTooltip/ChartUtil
│ │ ├── layout/ # Responsive/ResponsiveGrid
│ │ ├── paint/ # Graphics2DBridge/PaintCallback
│ │ ├── theme/ElementTheme.java # 主题设计令牌 + 明暗监听
│ │ ├── pfunc/BannerCallBack.java
│ │ └── Utils/ # AnimatedBorderEngine/ImageEditorTool
│ │
│ ├── export/ # 核心导出模块
│ │ ├── ModuleOperationUtilsJNI.java # ★ JNI 总入口(~4,963 native)
│ │ ├── WindowOperationUtils.java # 窗口操作封装
│ │ ├── ProcessAndThreadUtils.java # 进程线程操作
│ │ ├── SystemUtils.java # 系统工具集
│ │ ├── ByteUtils.java # 字节编码转换
│ │ ├── ColorUtils.java # 颜色处理
│ │ ├── PathFileJSCM.java # DLL 路径管理(强制初始化)
│ │ ├── SearchLucene.java # Lucene 全文检索
│ │ │
│ │ ├── XC_GUI/ # XCGUI 炫彩界面(29 类)
│ │ ├── JadeViewGUI/ # JadeView WebView2 + 服务层
│ │ │ ├── JadeViewApp.java # ★ 应用门面(Builder 启动)
│ │ │ ├── JadeViewConfig.java # 统一配置中心
│ │ │ ├── JadeViewOss.java # 阿里云 OSS 客户端
│ │ │ ├── NettyDirectoryServer.java # HTTP 静态服务器 + WebSocket
│ │ │ ├── NettyHttpClient.java # HTTP 客户端 + 分片 + WebSocket
│ │ │ ├── PressureTest.java # 压测工具
│ │ │ ├── auth/ # RBAC 鉴权(Sa-Token)
│ │ │ └── core/ # WebView2 核心封装(8 类)
│ │ │
│ │ ├── Report_Table/ # 锐浪报表 Grid++(26 类)
│ │ ├── EmailUtils/ # 邮件收发(EMailUtils/CallBack)
│ │ ├── Print/ # 拼多多云打印(PddPrintUtils)
│ │ ├── VerificationCodeUtils/ # 验证码(CaptchaGenerator)
│ │ ├── capstone/ # 反汇编引擎(CapStone)
│ │ ├── hotkey/ # 键鼠驱动(DD/Ghost/Md)
│ │ └── powerUtils/ # PowerShell/CMD/Photoshop
│ │
│ ├── pfunc/ # 回调函数接口(47 个)
│ │ └── Nonvirtual/ # 非虚回调变体(10 个)
│ │
│ └── struct/ # 数据结构
│ ├── Enum/ # 枚举常量
│ │ ├── JadeView_Enum/ ReportGrid_Enum/ XC_Enum/
│ ├── JadeView_struct/ # JadeView 结构体(6 个)
│ └── Tag*.java # 基础数据结构(38 个)
│
├── x64/export/ # 64 位专用模块(4 个)
└── x86/export/ # 32 位专用模块(4 个)
```
---
## 六、快速开始
### 6.1 Maven 依赖
```xml
com.scm
Jscm-Core
1.0-SNAPSHOT
```
### 6.2 JNI 初始化(强制起始头)
> **硬性要求**:任何 JNI 调用之前,必须先执行 `PathFileJSCM` 三连初始化,否则 `Jscm.dll` 无法加载。
```java
import com.scm.all.export.PathFileJSCM;
public class App {
public static void main(String[] args) {
// ===== JSCM 框架初始化(强制,必须放最前面)=====
PathFileJSCM.setDebugFile32(PathFileJSCM.getJarPath() + "sdk\\x86\\");
PathFileJSCM.setDebugFile64(PathFileJSCM.getJarPath() + "sdk\\x64\\");
PathFileJSCM.setIsDebug(false); // 生产 false / 开发 true
}
}
```
### 6.3 最小示例(XCGUI 窗口)
```java
import com.scm.all.export.XC_GUI.*;
import com.scm.all.export.PathFileJSCM;
// 起始头三连(见 6.2)
XCGUI_Core.XInitXCGUI(true); // true=D2D,false=GDI
int hWindow = XCGUI_Window.XWnd_Create(0, 0, 600, 400, "我的窗口", 0,
WindowStyle.window_style_default.getValue());
int hButton = XCGUI_Button.XBtn_Create(10, 10, 100, 30, "按钮", hWindow);
XCGUI_Window.XWnd_Show(hWindow, true);
XCGUI_Core.XRunXCGUI(); // 消息循环(阻塞)
XCGUI_Core.XExitXCGUI(); // 退出
```
### 6.4 现代 Web 应用(JadeViewApp 门面)
```java
import com.scm.all.export.JadeViewGUI.JadeViewApp;
JadeViewApp app = JadeViewApp.builder("我的应用", "myapp123") // appSignature ≥ 6 字符
.rootPath(JadeViewApp.getJarDirectory())
.htmlEntry("index.html")
.devMode(true)
.httpPort(0) // 自动分配端口
.subscribe(-1, "app-ready", (wid, data) -> {
app.windowBuilder("主窗口", 1200, 800).build();
return 0;
})
.launch();
app.runMessageLoop(); // 阻塞;退出时自动清理
```
### 6.5 链式组件(XCChainedUI)
```java
import com.scm.all.component.XCChainedUI;
XCChainedUI.app()
.window("链式组件示例", 800, 600)
.button(20, 20, 120, 40, "点击我")
.onClick(id -> System.out.println("按钮被点击"))
.end()
.show()
.run();
```
---
## 七、模块详解
### 7.1 ModuleOperationUtilsJNI — JNI 总入口
> **文件**:`com/scm/all/export/ModuleOperationUtilsJNI.java`
> **规模**:约 4,963 个 `native` 方法声明
> **职责**:DLL 加载、系统架构检测、所有原生 API 的 Java 侧入口
```java
static {
if (systemIs32()) { System.load(tileDir() + "Jscm.dll"); }
if (systemIs64()) { System.load(tileDir() + "Jscm.dll"); }
}
```
| 分类 | 代表方法 | 说明 |
|:---|:---|:---|
| 窗口操作 | `FindWindowW`, `ShowWindow`, `SetWindowPos`, `SendMessageW` | Win32 窗口 API |
| 进程线程 | `CreateToolhelp32Snapshot`, `OpenProcess`, `CreateRemoteThread` | 进程/线程管理 |
| 内存操作 | `ReadProcessMemory`, `WriteProcessMemory`, `VirtualQueryEx` | 跨进程内存读写 |
| XCGUI | `XInitXCGUI`, `XWnd_Create`, `XBtn_Create`, `XRunXCGUI` | 炫彩 UI 全量封装 |
| JadeView | `JadeView_Init`, `JadeView_Create_Webview_Window_` | WebView2 引擎 |
| Report_Table | `report_Table_SetComPointer`, `report_Chart_SetChart3D` | 锐浪报表 COM |
| 键鼠驱动 | `DDBtn`, `DDMov`, `M_Delay` | DD/Ghost/Md 驱动 |
| 反汇编 | `CapStone_cs_open`, `CapStone_cs_disasm` | CapStone 引擎 |
| 硬件断点 | `RunHardwareBreakpointX86/X64` | 硬件调试断点 |
| 注册表 | `RegOpenKeyExW`, `RegSetValueExW`, `RegDeleteKeyW` | 注册表 CRUD |
### 7.2 核心工具类
#### ByteUtils — 字节 / 编码 / 进制 / 算法
```java
import com.scm.all.export.ByteUtils;
// 基础类型 ↔ 字节数组
byte[] b = ByteUtils.intToBytesArray(12345);
int i = ByteUtils.bytesArrayToInt(b);
// 字符串编码(与 Windows API 交互务必使用,避免乱码)
byte[] utf8 = ByteUtils.utf8ToBytesArray("中文");
String text = ByteUtils.bytesArrayToUtf8WideString(utf8);
// 进制转换
String hex = ByteUtils.bytesToHexString(b);
byte[] back = ByteUtils.hexStrToBytes(hex);
// 特征码搜索(?? 通配)
ByteUtils.hexToMd5BytesMatches("48 8B ?? ??", data);
```
#### ColorUtils — 颜色转换
```java
import com.scm.all.export.ColorUtils;
// RGBA 格式:(alpha<<24)|(b<<16)|(g<<8)|r
long red = ColorUtils.RGBA(255, 0, 0, 255);
long blue = ColorUtils.RGBA("#0088FF", 255); // 必须带 # 前缀
int[] hsv = ColorUtils.rgbToHsv(255, 0, 0);
```
### 7.3 XC_GUI — XCGUI 炫彩界面库封装
> **包**:`com.scm.all.export.XC_GUI` · **规模**:29 类 · 1,648 方法 · **引擎**:Direct2D
| 类名 | 方法数 | 功能 |
|:---|:---|:---|
| `XCGUI_Window` | 149 | 窗口创建/显示/调整/消息循环 |
| `XCGUI_Core` | 120 | 初始化/退出/布局加载/全局设置 |
| `XCGUI_Edit` | 119 | 编辑框/富文本编辑器 |
| `XCGUI_Element` | 116 | 通用元素操作 |
| `XCGUI_Draw` | 114 | 绘图引擎 |
| `XCGUI_List` | 111 | 列表控件 |
| `XCGUI_Adapter` | 107 | 数据适配器 |
| `XCGUI_Image` | 107 | 图像对象操作 |
| `XCGUI_ListView` | 82 | 列表视图 |
| `XCGUI_ListBox` | 78 | 列表框 |
| `XCGUI_Tree` | 69 | 树形控件 |
| `XCGUI_Shape` | 63 | 形状控件 |
| `XCGUI_ComboBox` | 52 | 组合框 |
| `XCGUI_Menu` | 46 | 菜单 |
| `XCGUI_Animation` | 45 | 动画引擎 |
| `XCGUI_Background` | 44 | 背景对象 |
| `XCGUI_ScrollView` | 28 | 滚动视图 |
| `XCGUI_TabBar` | 26 | 标签栏 |
| `XCGUI_Button` | 26 | 按钮 |
| `XCGUI_Layout` | 22 | 布局管理器 |
| `XCGUI_Pane` | 22 | 面板/分组框 |
| `XCGUI_Table` | 21 | 表格 |
| `XCGUI_Font` | 20 | 字体管理 |
| `XCGUI_ScrollBar` | 18 | 滚动条 |
| `XCGUI_DateTime` | 18 | 日期时间选择器 |
| `XCGUI_ToolBar` | 11 | 工具栏 |
| `XCGUI_ProgressBar` | 10 | 进度条 |
| `XCGUI_PropertyGrid` | 4 | 属性网格 |
> **句柄类型铁律**:`XWnd_*` 只接受**窗口句柄**;`XEle_*`/`XLayout_*`/`XDraw_*` 接受**元素/布局句柄**。混用会触发 `Jscm.dll` 空指针崩溃。
### 7.4 component — UI 组件引擎(纯 Java)
> **包**:`com.scm.all.component` · **规模**:97 个 `XC*ComponentUI` · **无 Swing 依赖**
核心四件套:
| 文件 | 职责 |
|:---|:---|
| `XCChainedUI.java` | 链式 API 唯一入口(App/Window/Element/各组件 Builder) |
| `XCUIEventDispatcher.java` | 全局唯一元素事件分发器 |
| `XCUIResourceManager.java` | 全局资源回收系统(类似 Java GC) |
| `XC*ComponentUI.java` | 单个组件真正实现(97 个) |
#### 97 个组件清单
- **基础控件**:`XCButtonComponentUI`、`XCInputComponentUI`、`XCInputNumberComponentUI`、`XCRadioComponentUI`、`XCCheckboxComponentUI`、`XCSwitchComponentUI`、`XCSelectComponentUI`、`XCMultiSelectComponentUI`、`XCAutocompleteComponentUI`、`XCSearchComponentUI`、`XCSliderComponentUI`、`XCRateComponentUI`、`XCUploadComponentUI`、`XCTagComponentUI`、`XCDatePickerComponentUI`、`XCTimePickerComponentUI`、`XCDateRangePickerComponentUI`、`XCDateTimePickerComponentUI`、`XCCascaderComponentUI`、`XCTransferComponentUI`、`XCInputOtpComponentUI`、`XCInputTagComponentUI`、`XCColorPickerComponentUI`、`XCSegmentedComponentUI`、`XCTreeSelectComponentUI`。
- **数据展示**:`XCTableComponentUI`、`XCListBoxComponentUI`、`XCListViewComponentUI`、`XCTreeComponentUI`、`XCCardPanelComponentUI`、`XCCardTabsComponentUI`、`XCDescriptionsComponentUI`、`XCEmptyComponentUI`、`XCAvatarComponentUI`、`XCBadgeComponentUI`、`XCStatisticComponentUI`、`XCTimelineComponentUI`、`XCCalendarComponentUI`、`XCProgressComponentUI`、`XCProgressGaugeComponentUI`、`XCAnimatedNumberBoxUI`、`XCDynamicNumberComponentUI`、`XCCountdownComponentUI`、`XCSkeletonComponentUI`、`XCResultComponentUI`、`XCWatermarkComponentUI`、`XCDividerComponentUI`、`XCSpaceComponentUI`、`XCRowColComponentUI`。
- **反馈**:`XCMessageComponentUI`、`XCMessageBoxComponentUI`、`XCNotificationComponentUI`、`XCAlertComponentUI`、`XCDialogComponentUI`、`XCDrawerComponentUI`、`XCLoadingComponentUI`、`XCTooltipComponentUI`、`XCPopoverComponentUI`、`XCPopconfirmComponentUI`、`XCTourComponentUI`。
- **导航/容器**:`XCMenuComponentUI`、`XCMenuBarComponentUI`、`XCContextMenuComponentUI`、`XCBreadcrumbComponentUI`、`XCPaginationComponentUI`、`XCStepBarComponentUI`、`XCTabsComponentUI`、`XCToolBarComponentUI`、`XCHeaderComponentUI`、`XCPageHeaderComponentUI`、`XCAffixComponentUI`、`XCAnchorComponentUI`、`XCBacktopComponentUI`、`XCInfiniteScrollComponentUI`、`XCCarouselComponentUI`、`XCBannerCarouselComponentUI`、`XCBannerComponentUI`、`XCCollapseComponentUI`、`XCContainerComponentUI`、`XCSideMenuLayoutComponentUI`、`XCSplitButtonComponentUI`、`XCSplitterComponentUI`、`XCScrollBarComponentUI`、`XCScrollViewComponentUI`、`XCIconComponentUI`、`XCLinkComponentUI`、`XCFormComponentUI`、`XCDropdownComponentUI`。
- **图表**:`XCLineChartComponentUI`、`XCBarChartComponentUI`、`XCPieChartComponentUI`、`XCFunnelChartComponentUI`、`XCGaugeChartComponentUI`、`XCHeatmapChartComponentUI`、`XCKLineChartComponentUI`、`XCScatterChartComponentUI`、`XCFinancialChartComponentUI`。
- **其他**:`XCButtonAnimateComponentUI`、`XCButtonEffectsComponentUI`、`XCImageComponentUI`、`XCImageEditComponentUI`、`XCSpreadsheetComponent`、`XCResponsiveComponentUI`、`AnimationEngine`、`BannerEffect`。
#### 链式 Builder 用法示例
```java
p.button(20, 20, 120, 40, "点击我")
.onClick(id -> System.out.println("点击"))
.end();
p.timeline(260, 300, 260, 300, items)
.onItemClick((index, item) -> System.out.println("第 " + index + " 项:" + item.title))
.end();
p.calendar(240, 180, 240, 180).end();
```
#### 事件分发器(XCUIEventDispatcher)
炫彩 `XEle_RegEventC1` 原生只保留**最后一次**注册回调的 `Class`。若每个组件各写匿名子类,会互相覆盖导致事件错乱/不触发。因此全部事件统一走全局分发器:
```java
XCUIEventDispatcher.bind(hEle, XE_BNCLICK.getMessageCode(), "OnBtnClick", callback);
XCUIEventDispatcher.clear(hEle); // 销毁时清理事件处理器
```
#### 资源回收(XCUIResourceManager)
类似 Java GC 的全局资源回收系统,解决句柄泄漏:
```java
// 窗口销毁时自动回收注册的清理动作
XCUIResourceManager.instance().register(window.handle(), () -> XCButtonComponentUI.destroy(ins));
// 弱引用跟踪,对象不可达时自动清理
XCUIResourceManager.instance().track(referent, cleanup);
```
---
### 7.5 JadeViewGUI — WebView2 引擎 + 现代服务层
> **包**:`com.scm.all.export.JadeViewGUI` · **底层**:Microsoft Edge WebView2(Chromium)
该模块分为三个层次:
| 层次 | 类 | 职责 |
|:---|:---|:---|
| **应用门面** | `JadeViewApp` | Builder 启动、HTTP 服务器、协议路径、窗口创建、事件订阅 |
| **服务层** | `NettyDirectoryServer` / `NettyHttpClient` | 静态文件服务、WebSocket、分片传输、代理、压测 |
| **鉴权/存储** | `SaTokenUtil` / `JadeViewOss` / `JadeViewConfig` | RBAC 鉴权、对象存储、配置中心 |
| **核心封装** | `core/JadeView_*`(8 类) | WebView2 窗口/系统/对话框/托盘/菜单/IPC |
#### JadeViewApp 应用门面
```java
JadeViewApp app = JadeViewApp.builder("应用名", "签名≥6字符")
.rootPath(JadeViewApp.getJarDirectory())
.htmlEntry("index.html")
.devMode(true)
.httpPort(0)
.singleInstance(true)
.fileCache(true)
.enableRbac(new InMemoryRbacUserProvider().addUser("admin", "123", null, null))
.subscribe(-1, "app-ready", callback) // Init 前预订阅,不丢早期事件
.addApiRoute("/api/db/", handler) // 注册 API 路由
.launch();
int winId = app.windowBuilder("主窗口", 1200, 800)
.theme("Dark").alwaysOnTop(true).borderless().transparent(true)
.disableRightClick().ua("MyApp/1.0").build();
```
#### NettyDirectoryServer — HTTP 静态服务器 + WebSocket
```java
int port = NettyDirectoryServer.start(8080, "./www");
NettyDirectoryServer.addApiRoute("/api/", (method, body, headers, path) -> json);
NettyDirectoryServer.addProxyRoute("/api/", "http://localhost:3000/");
NettyDirectoryServer.setWebSocketListener(listener);
NettyDirectoryServer.broadcastText("hello");
NettyDirectoryServer.broadcastFile(file); // 自动分片
```
#### NettyHttpClient — HTTP 客户端 + 分片 + WebSocket
```java
NettyHttpClient.get(url, callback);
NettyHttpClient.downloadResumable(url, file, (recv, total) -> { }); // 断点续传
NettyHttpClient.chunkedUpload(url, data, callback); // 分片上传
NettyHttpClient.connectWebSocket(url, callback); // WebSocket 客户端
```
#### RBAC 鉴权(Sa-Token)
```java
SaTokenUtil.init(provider);
String token = SaTokenUtil.login("admin", "123456");
boolean isAdmin = SaTokenUtil.isAdmin(SaTokenUtil.getLoginIdByToken(token));
// MySQL 数据源(Druid + BCrypt)
try (MySqlRbacUserProvider mysql = new MySqlRbacUserProvider(url, user, pass)) {
SaTokenUtil.init(mysql);
}
```
#### JadeViewOss — 阿里云对象存储
```java
JadeViewOss oss = JadeViewOss.getInstance();
oss.init(endpoint, ak, sk, bucket);
String url = oss.upload("dir/file.txt", new File("C:\\file.txt"));
oss.download("dir/file.txt", new File("C:\\download.txt"));
oss.shutdown();
```
---
### 7.6 Report_Table — 锐浪报表 Grid++ 封装
> **包**:`com.scm.all.export.Report_Table` · **规模**:26 类 · 2,842 方法 · **底层**:COM
| 类名 | 方法数 | 功能 |
|:---|:---|:---|
| `Report_Table` | 298 | 报表主表(COM 初始化) |
| `Report_Chart` | 208 | 图表(柱状/饼图/折线/3D) |
| `Report_Column` | 206 | 列对象 |
| `Report_Export` | 172 | 导出(PDF/Excel/Word/HTML/图片) |
| `Report_TableSelect` | 147 | 选择集 |
| `Report_Control` | 132 | 报表控件 |
| `Report_TextBox` | 130 | 文本框 |
| `Report_Section` | 123 | 节/段落 |
| `Report_Graphics` | 123 | 图形绘制 |
| `Report_Printer` | 120 | 打印机管理 |
| `Report_Group` | 113 | 分组 |
| `Report_Utility` | 99 | 工具方法 |
| `Report_TableDesign` | 98 | 设计器 |
| `Report_Field` | 96 | 字段 |
| `Report_DetailGrid` | 94 | 明细网格 |
| `Report_FreeGrid` | 84 | 自由网格 |
| `Report_Image` | 79 | 图像对象 |
| `Report_Recordset` | 69 | 记录集 |
| `Report_Parameter` | 69 | 参数 |
| `Report_TablePrint` | 67 | 打印控制 |
| `Report_Font` | 64 | 字体 |
| `Report_CrossTab` | 60 | 交叉表 |
| `Report_CellBase` | 48 | 单元格基类 |
| `Report_Barcode` | 48 | 条形码 |
| `Report_Border` | 24 | 边框 |
| `Report_BinaryObject` | 20 | 二进制对象 |
```java
Report_Table.report_Table_RegisterComSilent("GridppReport.dll");
Report_Table.report_Table_SetComPointer(Report_Table.report_Table_InitPointer());
Report_Column.report_Column_SetWidth(columnHandle, 120);
Report_Export.report_Export_ExportToPDF("C:\\output.pdf");
```
---
### 7.7 窗口与进程工具
```java
// WindowOperationUtils
WindowOperationUtils.enumWindowClose("Notepad", null);
WindowOperationUtils.windowTop(hwnd, true, 0);
WindowOperationUtils.windowSetAlpha(hwnd, 128);
// ProcessAndThreadUtils
List procs = ProcessAndThreadUtils.processEnumInfo();
int pid = ProcessAndThreadUtils.processNameGetPid("chrome.exe");
```
---
### 7.8 EmailUtils — 邮件收发子系统
```java
EMailUtils.send("to@qq.com", "主题", "正文
", "from@139.com", "password");
EMailUtils.sendBatch(session, transport, recipients, "主题", "正文");
EMailUtils.forward(message, "forward@qq.com", "转发备注");
EMailUtils.getEmailDataSafe(session, host, user, pass, "imap", "INBOX", store, callback);
```
---
### 7.9 Print — 拼多多云打印
```java
PddPrintUtils pdd = new PddPrintUtils(); // ws://127.0.0.1:5000
pdd.connectBlocking(5000);
List printers = pdd.getPrinters();
PddPrintUtils.PrintResult result = pdd.print(task);
pdd.close();
```
---
### 7.10 hotkey — 键鼠驱动子系统
```java
// DD 驱动
DdDriver.btn(1); // 左键按下
DdDriver.mov(500, 300); // 绝对移动
DdDriver.key(30, 1); // 按键
// Ghost 驱动
GhostDriver.getDeviceListByModel();
GhostDriver.selectDeviceBySerialNumber("SN12345");
// Md 驱动
MdDriver.m_Delay(100);
```
---
### 7.11 Adobe Photoshop 自动化
```java
PhotoshopTool.openDocument("C:\\photo.psd");
PhotoshopTool.resizeImage(1920, 1080);
PhotoshopTool.applyGaussianBlurFilter(5.0);
PhotoshopTool.saveDocumentAs("C:\\out.jpg", "JPEG");
```
---
### 7.12 AI 集成模块
> **包**:`com.scm.all.AI` · **四大平台**:ClaudeCode / CloudLLM / CozeAI / RunNingHubAI
#### ClaudeCodeToolkit — Ollama 本地大模型(链式 API)
```java
import com.scm.all.AI.ClaudeCode.ClaudeCodeToolkit;
// 最简单用法
ClaudeCodeToolkit toolkit = new ClaudeCodeToolkit();
String reply = toolkit.chat("你好,请介绍一下自己");
// 链式调用
String reply2 = ClaudeCodeToolkit.create()
.model("qwen3:8b")
.stream(true)
.system("你是一个专业的 Java 程序员")
.skill("JSCM 全栈开发技能") // 激活内置技能
.chat("帮我写一个单例模式");
// 流式输出
toolkit.chatStream("写一首诗", chunk -> System.out.print(chunk.getContent()));
// 多轮对话
toolkit.user("我叫张三").chat();
System.out.println(toolkit.user("我叫什么名字?").chat());
```
#### 技能系统(Skill / SkillManager)
框架内置 **JSCM 全栈开发技能**(`src/main/resources/skills/SKILL.md`),整合了项目初始化、工具类、炫彩 UI、链式组件、JadeView、报表、AI、Lucene 等全部开发知识。`ClaudeCodeToolkit` 启动时自动加载并激活。
```java
SkillManager manager = new SkillManager();
manager.loadBundledSkills();
Skill skill = manager.findByName("JSCM 全栈开发技能");
manager.setActiveSkill(skill);
```
#### CloudLLMClient — 云端 LLM
```java
CloudLLMConfig config = CloudLLMConfig.presets().deepSeek("sk-xxx", "deepseek-chat");
CloudLLMClient client = new CloudLLMClient(config);
String reply = client.chat("你好");
// 推理内容(DeepSeek-R1 等思考模型)
CloudLLMClient.ChatResult result = client.chatDetailed("9.11 和 9.8 哪个大?");
System.out.println("正文: " + result.getContent());
if (result.hasReasoning()) System.out.println("推理: " + result.getReasoning());
```
#### CozeAI / RunNingHubAI
```java
CoZeWorkflowClient.setAccessToken("your-token");
String fileId = CoZeWorkflowClient.uploadFile("C:\\data.csv");
RunningHubClient client = RunningHubClient.builder().apiKey("...").build();
```
---
### 7.13 SearchLucene — 全文检索
```java
import com.scm.all.export.SearchLucene;
SearchLuceneChain.create("D:/index", SearchLuceneChain.smartChineseAnalyzer())
.add(SearchLuceneChain.document().string("id","1").text("title","你好").build())
.commit().close();
```
---
### 7.14 capstone — 反汇编引擎
```java
CapStone.CapStone_cs_open(TAG_CS_ARCH.CS_ARCH_X86, TAG_CS_MODE.CS_MODE_32);
CapStone.CapStone_cs_disasm(opcode, 0x401000, (mnemonic, opStr, size) ->
System.out.println(mnemonic + " " + opStr));
CapStone.CapStone_cs_free();
```
---
### 7.15 x64/x86 — 平台专用模块
> **区别**:地址类型不同(`long` vs `int`),API 签名对称
```java
byte[] data = MemoryOperationUtilsX64.readMemoryBytes(hProcess, addr, 256);
MemoryOperationUtilsX64.writeMemoryInt(hProcess, addr, 0xDEADBEEF);
DebugBreakPointX64.runHardwareBreakpointX64(hProcess, threadId, addr,
BreakpointType.breakpoint_type_read.getValue(), 1, callback);
ApiHookOperationUtilsX64.installHook("user32.dll", "MessageBoxW", hookCallback, originalCallback);
```
---
## 八、数据结构、枚举与回调体系
### 8.1 Tag* 结构体(38 个)
| 类别 | 结构体 | 用途 |
|:---|:---|:---|
| 几何 | `TagPoint`/`TagPointF`/`TagPointD` | 整数/浮点/双精度坐标点 |
| 几何 | `TagRect`/`TagRectF`/`TagRectSize` | 矩形区域 |
| 几何 | `TagSize`/`TagPosition` | 尺寸与位置 |
| 间距 | `TagBorderSize`/`TagPadDingSize`/`TagMarginSize_` | 边框/内边距/外边距 |
| 窗口 | `TagWinInfo`/`TagMyWindwInfo` | 窗口信息 |
| 进程 | `TagProcessenTry32`/`TagThreadEntry32` | 进程/线程快照 |
| 模块 | `TagModuleenTry32`/`X64`/`X86` | 模块快照 |
| 内存 | `TagMemoryDataX64`/`X86`、`TagPmemory_Basic_InfoRmationX64`/`X86` | 内存数据/页属性 |
| 系统 | `TagINPUT`/`TagFontInfo`/`TagLOGFONTW` | 输入事件/字体 |
| 系统 | `TagHotKeyInfoTow`/`TagTokenPrivileges`/`TagLuid` | 热键/令牌 |
> **JNI 结构体铁律**:字段顺序必须与 C 结构体一一对应,**不可增删/调换**,否则破坏 JNI 内存布局。
### 8.2 JadeView_struct 结构体(6 个)
| 结构体 | 用途 |
|:---|:---|
| `WebViewWindowOptions` | WebView 窗口选项 |
| `WebViewSettings` | WebView 运行设置 |
| `FileDialogParams` | 文件对话框参数 |
| `MessageBoxParams` | 消息框参数 |
| `NotificationParams` | 系统通知参数 |
| `TrayMenuItemDesc` | 托盘菜单项描述 |
### 8.3 枚举常量
覆盖 XCGUI 全部控件状态、标志、类型定义:`WindowStyle`、`ButtonState`、`EditType`、`ImageDrawType`、`AnimationMove`、`BreakpointType`、`FontStyle`、`XcObjectType`、`CompleteWindowMessageEvent`(WM_*/XWM_*/XE_*)等。
### 8.4 回调接口体系(pfunc · 47 个)
| 接口 | 触发场景 |
|:---|:---|
| `IpcCallback` | JadeView IPC 事件(43 个 `*_callback`) |
| `IpcHandlerCallback` | IPC Handler(`Message01~Message100_callback`) |
| `JscmCallBack` | 通用 JNI 回调 |
| `WindowEventCallBack` | XCGUI 窗体事件(返回 `false`=未处理) |
| `XEleEventCallBack` | XC 元素事件(约 110 个 `On*`,返回 `true`=已处理) |
| `MemoryCallBack` | 内存搜索结果 |
| `ModuleCallBack` | 模块枚举回调 |
| `BreakpointCallBackX64`/`X86` | 硬件断点命中 |
| `CGridppReportEventHandler` | Grid++ 报表事件 |
| `CGRDesignerEventHandler` | 设计器事件 |
| `CGRDisplayViewerEventHandler`/`CGRPrintViewerEventHandler` | 显示/打印视图事件 |
| `JadeViewMsgBox` | 异步消息框/文件对话框回调 |
| `PermissionCallback` | 网页权限请求 |
| `Tag_cs_insnCallBack` | CapStone 反汇编指令 |
| `KeyCodeCallBack` | 键盘钩子 |
| `TokenCall` | 授权校验回调 |
| `ResponseEventCallBack` | 响应事件回调 |
> **回调防 GC 铁律**:所有 JNI 回调对象必须被 `static` 或长生命周期容器(如 `List