# 简化版屏幕墙 (SimpleScreenWall) 一个基于Qt开发的轻量级实时窗口预览系统,不依赖任何第三方录制库,直接使用Windows API实现窗口捕获和预览功能。 ## 🚀 项目特色 ### ✨ 核心功能 - **实时桌面预览** - 显示当前桌面的实时画面 - **窗口图标列表** - 展示所有活动窗口的图标和标题 - **实时窗口预览** - 选中窗口后显示其实时内容 - **最小化窗口支持** - 即使窗口最小化也能预览最后画面 - **智能缓存机制** - 优化性能,减少资源占用 ### 🎯 技术优势 - **零依赖** - 不需要AvRecorder、FFmpeg等第三方库 - **轻量级** - 直接使用Windows API,占用资源少 - **高性能** - 多线程架构,智能缓存优化 - **易部署** - 独立可执行文件,无需复杂配置 - **可配置** - 丰富的参数设置,适应不同需求 ## 📋 系统要求 - **操作系统**: Windows 10/11 (x64) - **Qt版本**: Qt 6.2 或更高版本 - **编译器**: MSVC 2019/2022 或 MinGW - **内存**: 建议 4GB 以上 - **显卡**: 支持基本图形加速 ## 🛠️ 编译构建 ### 方法一:使用CMake (推荐) ```bash # 1. 克隆或下载项目文件 # 确保以下文件在同一目录: # - screenwall_simple.h # - screenwall_simple.cpp # - main_simple.cpp # - CMakeLists_simple.txt # 2. 创建构建目录 mkdir build cd build # 3. 配置项目 cmake .. -G "Visual Studio 17 2022" -A x64 # 或者使用 MinGW: # cmake .. -G "MinGW Makefiles" # 4. 编译项目 cmake --build . --config Release # 5. 运行程序 .\bin\SimpleScreenWall.exe ``` ### 方法二:使用Qt Creator 1. 打开Qt Creator 2. 选择 "Open Project" 3. 选择 `CMakeLists_simple.txt` 文件 4. 配置Kit(选择合适的Qt版本和编译器) 5. 点击 "Build" 按钮编译 6. 点击 "Run" 按钮运行 ### 方法三:手动编译 ```bash # 使用qmake(需要先创建.pro文件) qmake -project qmake make # 或 nmake (Windows) ``` ## 🎮 使用说明 ### 启动程序 1. 运行 `SimpleScreenWall.exe` 2. 点击 "▶️ 启动" 按钮开始屏幕墙服务 3. 程序将自动开始捕获桌面和窗口内容 ### 界面布局 ``` ┌─────────────────────────────────────────┐ │ 🖥️ 简化版屏幕墙控制面板 │ │ [▶️ 启动] [⏹️ 停止] [🔄 刷新] [⚙️ 设置] │ ├─────────────────────────────────────────┤ │ 桌面实时预览区域 │ │ (点击可切换到桌面预览) │ ├─────────────────────────────────────────┤ │ [图标1] [图标2] [图标3] [图标4] ... │ │ 窗口图标列表 (可滚动) │ ├─────────────────────────────────────────┤ │ 选中窗口的实时预览 │ │ (显示窗口的实时内容) │ └─────────────────────────────────────────┘ ``` ### 操作指南 - **选择窗口**: 点击中间区域的窗口图标 - **桌面预览**: 点击上方的桌面预览区域 - **刷新列表**: 点击 "🔄 刷新" 按钮更新窗口列表 - **调整设置**: 点击 "⚙️ 设置" 打开配置对话框 - **查看日志**: 使用菜单 "视图" -> "显示/隐藏日志" (Ctrl+L) ## ⚙️ 配置选项 ### 性能设置 - **桌面更新间隔**: 100-5000ms (默认: 500ms) - **窗口列表更新间隔**: 500-10000ms (默认: 2000ms) - **窗口预览更新间隔**: 100-2000ms (默认: 200ms) - **最大缓存数量**: 10-200个 (默认: 50个) ### 显示设置 - **缩略图尺寸**: 80x60 到 300x225 像素 - **桌面预览尺寸**: 200x150 到 800x600 像素 ### 功能开关 - **启用桌面预览**: 开启/关闭桌面实时捕获 - **启用窗口预览**: 开启/关闭窗口实时捕获 - **显示最小化窗口**: 是否在列表中显示最小化的窗口 ## 🔧 高级功能 ### 快捷键 - `F5` / `Ctrl+R`: 刷新窗口列表 - `Ctrl+L`: 显示/隐藏日志面板 - `Ctrl+Shift+L`: 清空日志 - `Ctrl+,`: 打开设置对话框 - `Ctrl+Q`: 退出程序 ### 菜单功能 - **文件菜单**: 退出程序 - **视图菜单**: 刷新、日志控制 - **工具菜单**: 设置、系统信息 - **帮助菜单**: 关于信息、Qt信息 ### 配置文件 程序会自动保存配置到 `config.json` 文件,包含所有用户设置。 ## 🐛 故障排除 ### 常见问题 **Q: 程序启动后看不到任何窗口预览?** A: 检查以下几点: - 确保有管理员权限(某些系统窗口需要) - 检查防火墙/杀毒软件是否阻止 - 尝试重启程序或刷新窗口列表 **Q: 预览画面卡顿或延迟严重?** A: 调整性能设置: - 增加更新间隔时间 - 减少缓存数量 - 降低预览尺寸 **Q: 某些窗口无法预览?** A: 这是正常现象,以下窗口可能无法捕获: - 受保护的系统窗口 - 使用硬件加速的全屏应用 - 某些安全软件窗口 **Q: 内存占用过高?** A: 优化建议: - 减少最大缓存数量 - 增加更新间隔 - 关闭不需要的预览功能 ### 性能优化建议 1. **硬件配置** - 使用SSD硬盘提升响应速度 - 确保足够的内存空间 - 关闭不必要的后台程序 2. **软件设置** - 根据实际需求调整更新频率 - 合理设置缓存大小 - 定期清理日志文件 3. **系统优化** - 关闭Windows视觉效果 - 设置高性能电源模式 - 更新显卡驱动程序 ## 📊 技术架构 ### 核心组件 ``` SimpleScreenWall (主组件) ├── SimpleDesktopPreview (桌面预览) ├── SimpleWindowList (窗口列表) ├── SimpleWindowPreview (窗口预览) ├── SimpleWindowFinder (窗口查找) ├── SimpleCacheManager (缓存管理) └── SimpleScreenWallUtils (工具函数) ``` ### 技术栈 - **UI框架**: Qt6 Widgets - **图像处理**: Qt6 Gui (QPixmap, QPainter) - **系统API**: Windows API (User32, GDI32, DWM) - **多线程**: Qt6 Concurrent - **配置管理**: JSON格式 ### 关键API - `EnumWindows`: 枚举所有窗口 - `PrintWindow`: 捕获窗口内容 - `BitBlt`: 复制屏幕内容 - `GetWindowText`: 获取窗口标题 - `GetWindowIcon`: 获取窗口图标 ## 🔄 版本历史 ### v1.0.0 (当前版本) - ✅ 实现基本的屏幕墙功能 - ✅ 支持实时桌面和窗口预览 - ✅ 添加配置管理和缓存优化 - ✅ 完善的用户界面和交互 - ✅ 详细的日志和错误处理 ### 计划功能 (未来版本) - 🔄 多显示器支持 - 🔄 窗口搜索和过滤 - 🔄 预览录制功能 - 🔄 主题和皮肤系统 - 🔄 插件扩展机制 ## 🤝 贡献指南 欢迎提交问题报告、功能建议或代码贡献! ### 开发环境设置 1. 安装Qt 6.2+和合适的编译器 2. 克隆项目代码 3. 使用Qt Creator或CMake构建 4. 运行测试确保功能正常 ### 代码规范 - 使用C++17标准 - 遵循Qt编码规范 - 添加适当的注释和文档 - 确保跨平台兼容性(主要支持Windows) ## 📄 许可证 本项目采用 MIT 许可证,详见 [LICENSE](LICENSE) 文件。 ## 📞 联系方式 - **项目主页**: [GitHub Repository] - **问题反馈**: [GitHub Issues] - **邮箱支持**: support@simplescreenwall.com - **QQ群**: 123456789 --- **简化版屏幕墙** - 让窗口预览变得简单高效! 🚀