223 lines
4.7 KiB
Markdown
223 lines
4.7 KiB
Markdown
# 音量控制方案说明
|
||
|
||
## ⚠️ 关于错误码 -2147221164 (0x80040154)
|
||
|
||
如果你看到以下错误:
|
||
```
|
||
✗ 创建设备枚举器失败,错误码:-2147221164 (0x80040154)
|
||
```
|
||
|
||
这表示 **Core Audio API 初始化失败**。原因可能是:
|
||
- Windows N 版本(欧洲版,缺少媒体功能包)
|
||
- 系统音频服务异常
|
||
- COM 组件注册问题
|
||
- 权限问题
|
||
|
||
---
|
||
|
||
## ✅ 解决方案
|
||
|
||
程序已自动降级到备用方案,**仍可正常工作**!
|
||
|
||
### 方案对比
|
||
|
||
| 方案 | 精度 | 可靠性 | 依赖 | 推荐度 |
|
||
|------|------|--------|------|--------|
|
||
| **nircmd** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 需下载 35KB 工具 | ⭐⭐⭐⭐⭐ 强烈推荐 |
|
||
| Core Audio API | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 无 | ⭐⭐⭐ |
|
||
| PowerShell | ⭐⭐⭐ | ⭐⭐⭐⭐ | 无 | ⭐⭐⭐ |
|
||
| SendMessage | ⭐⭐ | ⭐⭐⭐⭐ | 无 | ⭐⭐ |
|
||
|
||
---
|
||
|
||
## 🎯 推荐方案:安装 nircmd(最佳体验)
|
||
|
||
### 步骤 1:下载 nircmd
|
||
|
||
访问:https://www.nirsoft.net/utils/nircmd.html
|
||
|
||
或直接下载:
|
||
- 32 位:https://www.nirsoft.net/utils/nircmd.zip
|
||
- 64 位:https://www.nirsoft.net/utils/nircmd-x64.zip
|
||
|
||
### 步骤 2:安装
|
||
|
||
**方法 A:放到系统 PATH(推荐)**
|
||
```
|
||
1. 解压 nircmd.zip
|
||
2. 复制 nircmd.exe 到 C:\Windows\
|
||
3. 完成!
|
||
```
|
||
|
||
**方法 B:放到程序目录**
|
||
```
|
||
1. 解压 nircmd.zip
|
||
2. 复制 nircmd.exe 到 remote-volume-monitor\ 目录
|
||
3. 完成!
|
||
```
|
||
|
||
### 步骤 3:验证
|
||
|
||
```bash
|
||
nircmd setsysvolume 32767
|
||
```
|
||
|
||
如果音量变为 50%,说明安装成功!
|
||
|
||
---
|
||
|
||
## 🔧 各方案详细说明
|
||
|
||
### 方案 1:nircmd(推荐)
|
||
|
||
**优点:**
|
||
- ✅ 最可靠,100% 成功
|
||
- ✅ 精确控制音量(0-100%)
|
||
- ✅ 支持获取当前音量
|
||
- ✅ 仅 35KB,无需安装
|
||
- ✅ 免费软件
|
||
|
||
**缺点:**
|
||
- ⚠️ 需要手动下载(一次下载,永久使用)
|
||
|
||
**使用命令:**
|
||
```bash
|
||
# 设置音量为 50%
|
||
nircmd setsysvolume 32767
|
||
|
||
# 设置音量为 30%
|
||
nircmd setsysvolume 19660
|
||
|
||
# 获取音量(返回值 0-65535)
|
||
nircmd cmdoutputget sysvolume
|
||
```
|
||
|
||
---
|
||
|
||
### 方案 2:Core Audio API(ctypes)
|
||
|
||
**优点:**
|
||
- ✅ 无需额外工具
|
||
- ✅ 精确控制音量
|
||
|
||
**缺点:**
|
||
- ❌ 可能失败(如你遇到的错误)
|
||
- ❌ 代码复杂,维护成本高
|
||
|
||
**适用场景:**
|
||
- 标准 Windows 10/11 专业版/家庭版
|
||
- 非 N 版本系统
|
||
|
||
---
|
||
|
||
### 方案 3:PowerShell
|
||
|
||
**优点:**
|
||
- ✅ Windows 自带
|
||
- ✅ 无需额外工具
|
||
|
||
**缺点:**
|
||
- ⚠️ 精度有限
|
||
- ⚠️ 无法精确获取音量
|
||
|
||
**使用示例:**
|
||
```powershell
|
||
# 模拟音量键(不精确)
|
||
Add-Type -AssemblyName System.Windows.Forms
|
||
```
|
||
|
||
---
|
||
|
||
### 方案 4:SendMessage
|
||
|
||
**优点:**
|
||
- ✅ 100% 可用
|
||
- ✅ 无需任何依赖
|
||
|
||
**缺点:**
|
||
- ❌ 只能模拟按键,无法设置精确音量
|
||
- ❌ 无法获取当前音量
|
||
|
||
---
|
||
|
||
## 📋 程序自动选择逻辑
|
||
|
||
```
|
||
1. 检查 nircmd.exe 是否在 PATH 或程序目录
|
||
└─ 是 → 使用 nircmd(最佳)
|
||
└─ 否 → 继续
|
||
|
||
2. 尝试初始化 Core Audio API
|
||
└─ 成功 → 使用 Core Audio
|
||
└─ 失败 → 继续
|
||
|
||
3. 检查 PowerShell 是否可用
|
||
└─ 是 → 使用 PowerShell
|
||
└─ 否 → 继续
|
||
|
||
4. 使用 SendMessage 模拟按键(最后备用)
|
||
```
|
||
|
||
---
|
||
|
||
## 🧪 测试你的配置
|
||
|
||
```bash
|
||
cd remote-volume-monitor
|
||
|
||
# 测试模式
|
||
python src\remote_volume_monitor.py --test
|
||
|
||
# 预期输出:
|
||
# ✓ 音量控制器:nircmd (或 PowerShell/SendMessage)
|
||
# ✓ RDP 监控器初始化成功
|
||
# 音量控制器:✓ 就绪
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 常见问题
|
||
|
||
### Q1: 我不想下载 nircmd,能用吗?
|
||
**A:** 可以!程序会自动使用 PowerShell 或 SendMessage 方案,但精度会受限。
|
||
|
||
### Q2: 为什么 Core Audio 会失败?
|
||
**A:** 可能原因:
|
||
- Windows N 版本(需要安装媒体功能包)
|
||
- Windows Audio 服务未运行
|
||
- 系统权限问题
|
||
|
||
### Q3: 如何检查我的 Windows 版本?
|
||
**A:**
|
||
```bash
|
||
# 查看 Windows 版本
|
||
winver
|
||
|
||
# 查看是否为 N 版本
|
||
systeminfo | findstr /B /C:"OS Name"
|
||
```
|
||
如果显示 "Windows 10/11 Pro N" 或 "Home N",就是 N 版本。
|
||
|
||
### Q4: N 版本如何修复?
|
||
**A:** 安装媒体功能包:
|
||
https://support.microsoft.com/zh-cn/topic/媒体功能包-for-windows-10-version-2004-85c94d1c-6077-4f41-8093-55c92a318272
|
||
|
||
或者直接下载 nircmd(更简单)。
|
||
|
||
---
|
||
|
||
## 📞 总结
|
||
|
||
| 你的情况 | 建议 |
|
||
|---------|------|
|
||
| 看到 0x80040154 错误 | 下载 nircmd(5 分钟搞定) |
|
||
| 不想下载额外工具 | 使用 PowerShell 方案(精度有限) |
|
||
| 需要精确控制 | 必须用 nircmd 或修复 Core Audio |
|
||
| 企业环境无法下载 | 联系 IT 安装媒体功能包 |
|
||
|
||
---
|
||
|
||
**推荐操作:** 下载 nircmd,放到 `C:\Windows\` 目录,问题解决!
|
||
|
||
下载地址:https://www.nirsoft.net/utils/nircmd.html
|