当前位置: 首页 > news >正文

调用com接口调整windows系统音量

        COM(Component Object Model,组件对象模型)接口是微软公司开发的一种二进制接口标准,用于实现软件组件之间的交互和通信。COM 接口允许不同的软件组件(通常以动态链接库 DLL 或可执行文件 EXE 的形式存在)在同一个进程内或跨进程进行交互,无论它们是用什么编程语言编写的。

实现原理

        调整windows系统音量的原理很简单,它主要通过COM接口与Windows系统底层的音频服务进行通信。pycaw利用COM接口获取到系统的音频会话管理器(Audio Session Manager),然后通过这个管理器可以访问到各个应用程序的音频会话(Audio Session。每个音频会话都包含了一系列的属性,其中就包括音量(Volume)属性。通过修改这个属性,pycaw就可以实现对Windows系统音量的调整。

        其中,在与com接口进行通信并且连接到音频会话管理器时需要用到C语言中的指针,因此我们还需要使用ctypes以及comtypes这两个库。

获取方式

pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple ctypes
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple pycaw
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple comtypes

 

源代码

from ctypes import cast, POINTER
from comtypes import CLSCTX_ALL
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
def set_system_volume(volume_level:float):
    """
    设置系统主音量
    Args:
        volume_level:音量级别,范围为0.0到100.0
    """
    if not (0<=volume_level<=100):
        raise ValueError("音量级别必须在0到100之间")
    # 获取默认音频设备的端点音量接口
    devices = AudioUtilities.GetSpeakers()
    interface = devices.Activate(
        IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
    volume = cast(interface, POINTER(IAudioEndpointVolume))
    #需要判断是不是静音,倘若是静音需要解除静音,否则计时设置音量成功也还是静音状态
    mute=volume.GetMute()
    if mute==1:
        volume.SetMute(False,None)
    # 设置音量
    volume.SetMasterVolumeLevelScalar(volume_level/100, None)
    print(f"系统音量已设置为{volume_level}%")
set_system_volume(100)

结果

运行代码前静音 

        运行代码后音量被设置到100

 

相关文章:

  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_init_cycle 函数 - 详解(11)
  • Let‘s Encrypt免费证书的应用示例
  • 2025年2月28日(RAG)
  • 为AI聊天工具添加一个知识系统 之127 详细设计之68 应用行规:符号学芭比 之2
  • 西门子S7-1200 PLC计数器详解
  • docker-compose部署开源堡垒机Orion-Visor——筑梦之路
  • 随笔 | 写在二月的最后一天
  • 常用的 pip 命令
  • springboot rocketmq配置生产者和消息者
  • 优化器Reaction1:从动力学角度看优化算法(1.1):从GD 到 SGD
  • 提示词框架介绍和使用场景
  • VBA技术资料MF276:在集合中使用键
  • 利用 Python 爬虫进行跨境电商数据采集
  • 小程序画带圆角的圆形进度条
  • ctfshow——敏感信息公布
  • Linux入门
  • Windows 图形显示驱动开发-WDDM 3.2-自动显示切换(十一)
  • IDEA提示将方法形参更改为(什么什么类型),要检查对应的实体类中的字段类型是否正确
  • 如何配置虚拟机的IP上网
  • QT day1
  • 33岁改行做网站建设/100个电商平台
  • 网站克隆 有后台登录/seo教程网站优化推广排名
  • 做本地房产网站/网站seo策划方案案例分析
  • 电子商务网站建设与维护03/全球网站流量排名查询
  • 外贸常用网站有哪些/郑州关键词网站优化排名
  • 规划网站站点需要遵循哪些原则/站长工具综合权重查询