# electronTools **Repository Path**: Allwin/electron-tools ## Basic Information - **Project Name**: electronTools - **Description**: electron小工具 1、实现显示器数量获取(使用C++原生代码获取),electron组件获取不能识别扩展显示器;原因是笔记本+扩展屏幕时被显卡驱动合并为一个逻辑显示器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-02 - **Last Updated**: 2026-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GetViewer - 显示器检测 基于 Electron 的桌面应用,用于检测当前连接显示器的数量、分辨率和坐标信息。 ## 功能 - 检测显示器总数 - 每个显示器的 DIP 分辨率和物理像素分辨率 - 显示器在虚拟桌面上的坐标(bounds) - 工作区(排除任务栏)信息 - 缩放因子(scaleFactor) - 主显示器标识 ## 运行 ```bash npm install npm run rebuild # 为 Electron 编译 C++ 原生模块 npm start ``` ## C++ 原生模块 物理显示器枚举通过 C++ 原生模块实现,调用 Windows API: - **SetupAPI** (`GUID_DEVINTERFACE_MONITOR`):枚举物理 PnP 显示器,复制模式下可识别多个 - **EnumDisplayDevices**:备用枚举方式 ### 构建 - `npm run build`:按 Node.js 编译(开发调试) - `npm run rebuild`:按 Electron 的 Node 版本编译(运行前必须执行) ### 环境要求 - Windows 10+ - Visual Studio Build Tools(含 C++ 工作负载) - Node.js 18+ ## 项目结构 ``` getviewer/ ├── main.js # 主进程,Electron screen API + C++ 物理显示器 ├── preload.js # 预加载脚本 ├── index.html # 渲染页面 ├── renderer.js # 渲染进程逻辑 ├── styles.css # 样式 ├── win32PhysicalDisplays.js # 加载 C++ 原生模块 ├── src/ │ └── display_monitor.cc # C++ 原生模块源码 ├── binding.gyp # node-gyp 构建配置 └── package.json ```