You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建脚本/终端命令快速设置Windows左扬声器音量平衡为0?

解决方案:一键设置左扬声器音量平衡为0

一、PowerShell一键脚本(无需编程,快速实现)

这是最简的实现方式,无需编写编译代码:

  1. 以管理员身份打开PowerShell,运行以下命令安装音频设备管理模块:
Install-Module -Name AudioDeviceCmdlets
  1. 创建一个文本文件,将后缀改为.ps1,写入以下内容:
# 获取默认播放设备
$defaultDevice = Get-AudioDevice -Playback -Default
# 设置左声道音量为0,右声道保持100%
Set-AudioDevice -Playback -Device $defaultDevice -VolumeBalance 0,100
  1. 双击该脚本即可完成设置,也可以创建快捷方式,目标指向:
powershell.exe -File "你的脚本完整路径.ps1"

二、C语言实现路线图(适合初学者实践)

由于你已经完成CS50,具备C语言基础,可以通过调用Windows Core Audio API实现,步骤清晰可落地:

1. 前置准备

  • 使用Windows平台的C编译器(Visual Studio 或 MinGW)
  • 了解Windows COM组件的基础使用(因为音频API基于COM)

2. 核心实现步骤

  • 步骤1:初始化COM库:调用CoInitialize()启动COM环境,这是调用Windows系统API的必要步骤。
  • 步骤2:获取设备枚举器:通过CoCreateInstance()创建IMMDeviceEnumerator对象,用于查找音频设备。
  • 步骤3:获取默认播放设备:调用GetDefaultAudioEndpoint()获取系统默认的扬声器设备。
  • 步骤4:获取音量控制接口:通过设备对象的Activate()方法获取IAudioEndpointVolume接口,该接口支持单独控制左右声道音量。
  • 步骤5:设置声道平衡:调用SetChannelVolumeLevelScalar(),将左声道(索引0)的音量标量设为0.0,右声道(索引1)设为1.0(保持满音量)。
  • 步骤6:释放资源:调用各COM对象的Release()方法,避免内存泄漏,最后调用CoUninitialize()关闭COM环境。

3. 完整示例代码

#include <windows.h>
#include <mmdeviceapi.h>
#include <endpointvolume.h>

// 链接所需系统库
#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "mmdevapi.lib")

int main() {
    HRESULT hr;
    IMMDeviceEnumerator *deviceEnumerator = NULL;
    IMMDevice *defaultPlaybackDevice = NULL;
    IAudioEndpointVolume *endpointVolume = NULL;

    // 初始化COM库
    hr = CoInitialize(NULL);
    if (FAILED(hr)) {
        return 1;
    }

    // 创建音频设备枚举器
    hr = CoCreateInstance(
        &CLSID_MMDeviceEnumerator,
        NULL,
        CLSCTX_ALL,
        &IID_IMMDeviceEnumerator,
        (void**)&deviceEnumerator
    );
    if (FAILED(hr)) {
        goto cleanup;
    }

    // 获取默认播放设备(扬声器)
    hr = deviceEnumerator->lpVtbl->GetDefaultAudioEndpoint(
        deviceEnumerator,
        eRender,
        eConsole,
        &defaultPlaybackDevice
    );
    if (FAILED(hr)) {
        goto cleanup;
    }

    // 获取音量控制接口
    hr = defaultPlaybackDevice->lpVtbl->Activate(
        defaultPlaybackDevice,
        &IID_IAudioEndpointVolume,
        CLSCTX_ALL,
        NULL,
        (void**)&endpointVolume
    );
    if (FAILED(hr)) {
        goto cleanup;
    }

    // 设置左声道音量为0,右声道保持满音量
    hr = endpointVolume->lpVtbl->SetChannelVolumeLevelScalar(endpointVolume, 0, 0.0, NULL);
    hr = endpointVolume->lpVtbl->SetChannelVolumeLevelScalar(endpointVolume, 1, 1.0, NULL);

cleanup:
    // 释放所有COM对象
    if (endpointVolume) {
        endpointVolume->lpVtbl->Release(endpointVolume);
    }
    if (defaultPlaybackDevice) {
        defaultPlaybackDevice->lpVtbl->Release(defaultPlaybackDevice);
    }
    if (deviceEnumerator) {
        deviceEnumerator->lpVtbl->Release(deviceEnumerator);
    }
    CoUninitialize();
    return 0;
}

4. 编译运行

  • Visual Studio:新建空C项目,添加上述代码,直接编译运行,生成的exe文件可双击执行。
  • MinGW:在终端运行编译命令:
gcc speaker_balance.c -o speaker_balance.exe -lole32 -lmmdevapi

生成的speaker_balance.exe即为一键设置工具。

内容的提问来源于stack exchange,提问作者Aârohan YT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:10:37