截图功能
功能特性
- ✅ 多平台支持 (Windows/macOS/Linux)
- ✅ 全局快捷键支持 (Ctrl+Alt+A)
- ✅ 托盘菜单集成
- ✅ 右键菜单集成
- ✅ 自动识别操作 (保存文件/复制到剪切板)
- ✅ 防止重复截图保护
核心实现
截图服务 (ScreenService)
采用多平台适配策略:
- Windows: 集成第三方工具
ScreenCapture.exe - macOS: 使用系统原生
screencapture命令 - Linux: 调用
gnome-screenshot工具
javascript
// packages/main/src/services/screen-service.js
class ScreenService {
// 防止重入锁
static isCapturing = false;
// 默认超时时间
static TIMEOUT = 60 * 2 * 1000;
/**
* 执行截图
*/
static async captureScreen() {
// 检查是否正在截图中
if (ScreenService.isCapturing) {
return { success: false, type: 'busy', message: '截图正在进行中' };
}
ScreenService.isCapturing = true;
try {
const platform = process.platform;
let result;
if (platform === 'win32') {
result = await ScreenService.captureWindows();
} else if (platform === 'darwin') {
result = await ScreenService.captureMac();
} else if (platform === 'linux') {
result = await ScreenService.captureLinux();
}
return result;
} finally {
ScreenService.isCapturing = false;
}
}
// ... 具体平台实现代码
}路径配置
在 path-config.js 中配置截图工具路径,支持开发环境和生产环境自动切换。
javascript
// packages/main/src/config/path-config.js
// 截图程序路径(开发环境和生产环境)
const SCREEN_CAPTURE_EXE_PATH = app?.isPackaged
? path.join(NODE_SERVER_PATH, '/deps/ScreenCapture.exe')
: path.join(NODE_SERVER_PATH, '/deps/ScreenCapture.exe');功能集成
1. 全局快捷键
在 global-shortcut.js 中注册全局快捷键 Ctrl+Alt+A。
javascript
registerScreenCapture() {
const result = globalShortcut.register('CmdOrCtrl+Alt+A', async () => {
try {
logger.info('通过快捷键触发截图');
await ScreenService.safeCaptureScreen();
} catch (error) {
logger.error('快捷键截图失败:', error);
}
});
}2. 菜单集成
在托盘菜单和右键菜单中添加截图选项。
javascript
// packages/main/src/config/menu-config.js
{
label: '截图',
accelerator: 'CmdOrCtrl+Alt+A',
click: async () => {
try {
await ScreenService.safeCaptureScreen();
} catch (error) {
logger.error('菜单截图失败:', error);
}
},
}平台差异说明
| 平台 | 实现方式 | 特性 | 依赖 |
|---|---|---|---|
| Windows | ScreenCapture.exe | 支持区域选择、画笔标注、保存文件/剪切板 | 需内置 exe 文件 |
| macOS | screencapture -i -c | 系统原生交互式截图,直接复制到剪切板 | 无需额外依赖 |
| Linux | gnome-screenshot -a -c | 区域选择并复制到剪切板 | 需安装 gnome-screenshot |
使用说明
- 快捷键启动: 按下
Ctrl + Alt + A(Mac下为Cmd + Alt + A)。 - 菜单启动:
- 右键点击应用窗口内容区域,选择"截图"。
- 点击系统托盘图标,选择"截图"。
- 操作结果:
- Windows: 截图后可选择保存文件(自动打开保存路径)或点击完成(复制到剪切板)。
- Mac/Linux: 截图完成后图像数据自动复制到系统剪切板,可直接粘贴使用。