重构:将 Code 文件夹内容移至仓库根目录
- 移除 Code 文件夹层级 - 源代码、文档、配置直接放在根目录 - 更新 .gitignore 排除 Releases/Test
This commit is contained in:
212
docs/README_远程音量控制.md
Normal file
212
docs/README_远程音量控制.md
Normal file
@@ -0,0 +1,212 @@
|
||||
# 远程连接音量自动调节器
|
||||
|
||||
自动检测 Windows 远程桌面 (RDP) 连接,并在连接建立时自动调整系统音量。
|
||||
|
||||
## 🎯 功能特性
|
||||
|
||||
- ✅ 自动检测 RDP 远程连接建立/断开
|
||||
- ✅ 连接时自动降低音量(保护隐私/避免噪音)
|
||||
- ✅ 断开时自动恢复音量(可选)
|
||||
- ✅ 后台持续监控(守护进程模式)
|
||||
- ✅ 可配置音量百分比和检测间隔
|
||||
- ✅ 支持安装为 Windows 服务(开机自启)
|
||||
- ✅ 详细日志记录
|
||||
|
||||
## 📦 安装步骤
|
||||
|
||||
### 1. 准备环境
|
||||
|
||||
确保目标 Windows 电脑已安装:
|
||||
- Python 3.8 或更高版本
|
||||
- pip 包管理器
|
||||
|
||||
### 2. 安装依赖
|
||||
|
||||
```bash
|
||||
pip install pycaw comtypes wmi
|
||||
```
|
||||
|
||||
或一键安装:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 3. 配置文件
|
||||
|
||||
编辑 `config.ini`:
|
||||
|
||||
```ini
|
||||
[volume]
|
||||
remote_volume = 30 # 远程连接时音量 (0-100)
|
||||
local_volume = 80 # 本地使用音量 (可选)
|
||||
|
||||
[monitor]
|
||||
check_interval = 5 # 检测间隔 (秒)
|
||||
|
||||
[behavior]
|
||||
adjust_on_connect = true
|
||||
adjust_on_disconnect = true
|
||||
```
|
||||
|
||||
### 4. 启动方式
|
||||
|
||||
#### 方式 A:手动启动(测试用)
|
||||
|
||||
双击运行 `启动监控.bat`
|
||||
|
||||
或在命令行:
|
||||
```bash
|
||||
python remote_volume_monitor.py --config config.ini
|
||||
```
|
||||
|
||||
#### 方式 B:安装为 Windows 服务(推荐)
|
||||
|
||||
1. 下载 NSSM:https://nssm.cc/download
|
||||
2. 解压到程序目录
|
||||
3. 以**管理员身份**运行:
|
||||
|
||||
```bash
|
||||
nssm install RemoteVolumeMonitor
|
||||
```
|
||||
|
||||
4. 在弹出的界面中配置:
|
||||
- **Path**: `C:\Python39\python.exe` (你的 Python 路径)
|
||||
- **Args**: `C:\path\to\remote_volume_monitor.py --config C:\path\to\config.ini`
|
||||
- **Startup directory**: `C:\path\to\`
|
||||
|
||||
5. 点击 "Install service"
|
||||
|
||||
6. 启动服务:
|
||||
```bash
|
||||
nssm start RemoteVolumeMonitor
|
||||
```
|
||||
|
||||
#### 方式 C:使用提供的安装脚本
|
||||
|
||||
```bash
|
||||
# 以管理员身份运行 CMD
|
||||
python remote_volume_monitor.py --install-service
|
||||
|
||||
# 然后运行生成的 install_service.bat (管理员权限)
|
||||
```
|
||||
|
||||
## 🔧 命令行参数
|
||||
|
||||
```bash
|
||||
# 设置远程音量为 30%
|
||||
python remote_volume_monitor.py --volume 30
|
||||
|
||||
# 使用配置文件
|
||||
python remote_volume_monitor.py --config config.ini
|
||||
|
||||
# 创建示例配置文件
|
||||
python remote_volume_monitor.py --create-config
|
||||
|
||||
# 测试模式(检测一次后退出)
|
||||
python remote_volume_monitor.py --test
|
||||
|
||||
# 获取当前音量
|
||||
python remote_volume_monitor.py --get-volume
|
||||
|
||||
# 立即设置音量
|
||||
python remote_volume_monitor.py --set-volume 50
|
||||
|
||||
# 安装为 Windows 服务
|
||||
python remote_volume_monitor.py --install-service
|
||||
```
|
||||
|
||||
## 📊 日志查看
|
||||
|
||||
程序运行时会生成 `remote_volume.log` 文件,记录所有事件:
|
||||
|
||||
```
|
||||
2026-03-07 17:30:00,123 - INFO - ✓ 音量控制器初始化成功
|
||||
2026-03-07 17:30:00,456 - INFO - ✓ WMI 监控器初始化成功
|
||||
2026-03-07 17:30:00,789 - INFO - 🚀 远程音量监控器已启动
|
||||
2026-03-07 17:35:22,012 - INFO - 🔔 检测到远程连接建立
|
||||
2026-03-07 17:35:22,345 - INFO - ✓ 音量已设置为 30%
|
||||
2026-03-07 17:40:15,678 - INFO - 🔔 检测到远程连接断开
|
||||
2026-03-07 17:40:15,901 - INFO - ✓ 音量已设置为 80%
|
||||
```
|
||||
|
||||
## 🔍 工作原理
|
||||
|
||||
1. **会话检测**:通过 WMI 查询 `Win32_Session` 类,检测 `SessionType = "Remote"` 的活跃会话
|
||||
2. **备用检测**:如果 WMI 不可用,使用环境变量 `SESSIONNAME` 和 `query user` 命令
|
||||
3. **状态监控**:每 5 秒(可配置)检测一次会话状态变化
|
||||
4. **音量控制**:使用 `pycaw` 库调用 Windows Core Audio API 调整主音量
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
### 权限要求
|
||||
- 需要普通用户权限即可运行
|
||||
- 安装为服务时需要管理员权限
|
||||
|
||||
### 兼容性
|
||||
- Windows 10/11
|
||||
- Windows Server 2016/2019/2022
|
||||
- 需要启用 WMI 服务
|
||||
|
||||
### 远程桌面类型
|
||||
支持检测:
|
||||
- ✅ Windows 远程桌面 (RDP)
|
||||
- ✅ 快速助手 (Quick Assist)
|
||||
- ⚠️ TeamViewer/AnyDesk 等第三方工具(可能无法检测,因为它们不使用 RDP 协议)
|
||||
|
||||
### 多用户场景
|
||||
如果多人同时登录,程序会在任一远程会话活跃时调整音量。
|
||||
|
||||
## 🛠️ 故障排查
|
||||
|
||||
### 问题 1:依赖安装失败
|
||||
```bash
|
||||
# 尝试使用国内镜像
|
||||
pip install pycaw comtypes wmi -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
```
|
||||
|
||||
### 问题 2:WMI 不可用
|
||||
```bash
|
||||
# 检查 WMI 服务状态
|
||||
sc query winmgmt
|
||||
|
||||
# 如果未运行,启动服务
|
||||
net start winmgmt
|
||||
```
|
||||
|
||||
### 问题 3:音量无法调整
|
||||
- 检查音频设备是否正常
|
||||
- 确保程序有音频控制权限
|
||||
- 尝试以管理员身份运行
|
||||
|
||||
### 问题 4:无法检测远程连接
|
||||
- 检查防火墙是否阻止 WMI
|
||||
- 确认远程桌面服务正在运行
|
||||
- 查看日志文件获取详细错误信息
|
||||
|
||||
## 📝 自定义开发
|
||||
|
||||
如需支持其他远程工具(TeamViewer、向日葵等),可以修改 `RDPMonitor.is_remote_session()` 方法,添加对应的检测逻辑:
|
||||
|
||||
```python
|
||||
def is_remote_session(self):
|
||||
# 检测 TeamViewer
|
||||
for proc in self.c.Win32_Process():
|
||||
if 'teamviewer' in proc.Name.lower():
|
||||
return True
|
||||
|
||||
# 检测向日葵
|
||||
for proc in self.c.Win32_Process():
|
||||
if 'sunlogin' in proc.Name.lower():
|
||||
return True
|
||||
|
||||
# ... 其他检测方法
|
||||
```
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
MIT License - 自由使用和修改
|
||||
|
||||
## 🤝 贡献
|
||||
|
||||
欢迎提交 Issue 和 Pull Request!
|
||||
Reference in New Issue
Block a user