VC++设置与取得系统音量

2023-11-18

MMRESULT          rc;     // 多媒体函数返回结果变量
    HMIXER            hMixer; // 混合器设备句柄
    MIXERLINE         mxl;    // 音频线路标准状态信息结构体
    MIXERLINECONTROLS mxlc;   // 音频线路控制器集合信息结构体
    MIXERCONTROL      mxc;    // 单个音频线路控制器信息结构体

    // 打开混合器设备
    rc = mixerOpen(&hMixer, // 返回的设备句柄
                   0,       // 单声卡的设备ID为零
                   0,       // 不使用回调机制
                   0,       // 回调函数参数
                   0);      // MIXER_OBJECTF_MIXER宏的值,表示任选有效设备ID

    // 打开混合器设备无错的话,则
    if (MMSYSERR_NOERROR == rc)
    {
        // MIXERLINE 结构体变量清零
        ZeroMemory(&mxl, sizeof(MIXERLINE));

        mxl.cbStruct = sizeof(MIXERLINE); // 微软用此办法判断版本
        // 指出需要获取的通道,声卡的音频输出用MIXERLINE_COMPONENTTYPE_DST_SPEAKERS
        mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
        
        // 取得混合器设备的指定线路信息
        rc = mixerGetLineInfo((HMIXEROBJ)hMixer,
                              &mxl,
                              // 取得MIXERLINE::dwComponentType指定类型的第一个音频线路信息
                              MIXER_GETLINEINFOF_COMPONENTTYPE);
       
        // 取得混合器设备的指定线路信息成功的话,则
        if (MMSYSERR_NOERROR == rc)
        {
            // MIXERCONTROL 结构体变量清零
            ZeroMemory(&mxc, sizeof(MIXERCONTROL));

            mxc.cbStruct = sizeof(mxc); // 微软用此办法判断版本

            // MIXERLINECONTROLS 结构体变量清零
            ZeroMemory(&mxlc, sizeof(MIXERLINECONTROLS));
          
            mxlc.cbStruct = sizeof(mxlc); // 微软用此办法判断版本

            mxlc.dwLineID = mxl.dwLineID; // 上面取得的声卡音频输出线路标识
            // 控制类型为控制音量
            mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
            mxlc.cControls = 1;          // 使用 MIXERCONTROL 结构体变量个数
            mxlc.pamxctrl = &mxc;        // MIXERCONTROL 结构体变量指针
            mxlc.cbmxctrl = sizeof(mxc); // MIXERCONTROL 结构体变量字节大小
           
            // 取得控制器信息
            rc = mixerGetLineControls((HMIXEROBJ)hMixer,
                                      &mxlc,
                                      MIXER_GETLINECONTROLSF_ONEBYTYPE);

            // 取得控制器信息成功的话,则
            if (MMSYSERR_NOERROR == rc)
            {
                // 获取控制器中的值的音量范围:mxc.Bounds.lMinimum到mxc.Bounds.lMaximum.
                MIXERCONTROLDETAILS        mxcd;      // 控制器的状态信息
                MIXERCONTROLDETAILS_SIGNED volStruct; // 音量结构体变量(就一个成员量)

                // MIXERCONTROLDETAILS 结构体变量清零
                ZeroMemory(&mxcd, sizeof(mxcd));

                mxcd.cbStruct = sizeof(mxcd);       // 微软用此办法判断版本
                mxcd.dwControlID = mxc.dwControlID; // 上面取得的控制器标识
                mxcd.paDetails = &volStruct;        // 音量结构体变量指针
                mxcd.cbDetails = sizeof(volStruct); // 音量结构体变量字节大小
                mxcd.cChannels = 1;                 // 取得或设置全部通道

                #if 0 // 设置音量
                    volStruct.lValue = 0; // 想要设置的值
                    rc = mixerSetControlDetails((HMIXEROBJ)hMixer,
                                                &mxcd,
                                                MIXER_SETCONTROLDETAILSF_VALUE);
                #else
                    // 获得音量值
                    rc = mixerGetControlDetails((HMIXEROBJ)hMixer,
                                                &mxcd,
                                                MIXER_GETCONTROLDETAILSF_VALUE);

                    if (MMSYSERR_NOERROR == rc)
                    {
                        CString str = "";

                        str.Format("音量:%X", volStruct.lValue);

                        AfxMessageBox(str);
                    }
                #endif
            }
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VC++设置与取得系统音量 的相关文章

  • MFC winMain 如何最终进入可执行文件?

    In MFC wWinMain定义于appmodul cpp 据我所知 该文件内置于 mfc90ud dll 中 但是 当我运行我的应用程序时 调用堆栈显示MyApplication exe wWinMain 它是如何采取的wWinMain
  • MFC> 将对话框连接到对话框类

    我在现有的资源文件中定义了一个新对话框及其控件 我还创建了一个新文件 它将处理从此对话框生成的事件 但我不确定如何连接这两者 是声明enum IDD IDD NEW DIALOG 连接两者所需的一切 或者我们应该添加一些其他声明 在 MFC
  • VC++中如何判断链接是否存在?

    我有一个链接 我已通过正则表达式检查该链接是否是有效的 URL 现在 我想检查该链接是否是有效的 http 链接 即它不应该是不存在的链接 VC 6 0 MFC 有办法检查吗 一种选择是尝试使用以下方法从该 URL 获取数据URLOpenB
  • 菜单被裁剪

    我有一个MFC项目 它支持 40 多种语言 我的电脑上有两个显示器 它们都是不同尺寸的显示器和不同的分辨率 如果我将应用程序移至较小的显示器上 则不会显示完整的语言菜单 我知道它会显示滚动条 为什么不是呢 我的菜单是标准菜单 没有什么花哨
  • 考虑夏令时,将本地时间转换为 UTC 时间,反之亦然

    我知道如何将本地时间转换为 UTC 时间 反之亦然 但我在执行此操作时对夏令时 DST 处理感到非常困惑 那么任何人都可以回答以下问题 1 时区之间转换时 java内部是否处理DST 2 时区转换时需要做什么 3 有什么好的文章可以更清楚地
  • 如何向现有 Win32 C++ 项目添加 MFC 支持?

    我正在创建一个 C 应用程序 它使用 Qt 创建 GUI 但是 我需要使用依赖于 MFC 的第三方库 用于 CString 等 无论如何 是否可以将 MFC 添加到我的应用程序中以允许我使用这个库 或者我需要自己重写它 I saw 这个问题
  • 从不同操作系统检索到的故障转储指向消息循环。如何从那里到达故障位置? (TeamViewer 使我的进程崩溃。)

    我们软件的一位客户抱怨说 该软件在他的 Windows XP 计算机上崩溃了 我让他下载ProcDump https technet microsoft com en us sysinternals dd996900 aspx并按如下方式运
  • 使用 CSplitterWnd 在 CChildFrame 中创建多个视图

    我正在使用 MFC MDI 我需要创建如下视图 我的 ChildWnd 分为两部分 它们是LeftView CView 和RightView CScrollView LeftView 分为两部分 TreeView 和 FormView 我怎
  • MFC:如何捕获Web浏览器控件中的链接单击事件?

    我有一个带有 Web 控件的 MFC 应用程序 单击可单击链接时 它将使用 IE 打开 而不是默认浏览器 问题 有没有办法强制使用默认浏览器打开它 如果没有 我如何捕获链接单击事件 以便稍后可以操纵单击事件 谢谢 不 据我所知还没有 查看有
  • 如何在 MFC 中创建 GUI

    我需要能够即时创建指南 MFC中有没有办法做到这一点 我了解了如何在 net 中做到这一点 但我们还没有做到这一点 如果没有 您是否有一些我可以使用的代码的指针 don t forget to add Rpcrt4 lib to your
  • DateTime 对象不受其时间戳的约束?

    Is a DateTime object 不受其时间戳的约束 或者确实getTimestamp 有某种副作用使用时关于夏令时的变化 Details设置时间戳时DateTime开启的对象DST 意味着格式化时间在更改时钟之前 之后都存在 返回
  • 当窗口未最大化时缺少 WM_NCLBUTTONUP 消息的奇怪问题

    我有一个处理 WM NCLBUTTONUP 消息的窗口 以便处理标题栏中自定义按钮的点击 当窗口最大化时 这非常有效 但当窗口未最大化时 WM NCLBUTTONUP 消息永远不会到达 不过我确实收到了 WM NCLBUTTONDOWN 消
  • 与 UltraHD 兼容的 CHtmlView

    CHtmlView与 UltraHD 分辨率不兼容 实现 UltraHD 感知并不仅仅在于使用正确的 HTML CSS 打印预览机制失败并裁剪页面 许多个月前 微软承认这是一个问题 但没有解决它 我的应用程序大量使用CHtmlView用于显
  • 编辑默认工具栏时 Microsoft Visual Studio“未知位图格式”

    我已使用项目创建向导使用 Microsoft 基础类库 MFC 创建了一个应用程序 我创建了一个多文档界面 MDI 应用程序 该向导创建您可以使用的虚拟工具栏和菜单 我扩展了默认工具栏 没有任何问题 但是现在当我尝试通过资源视图编辑它时 我
  • Rails 的 utc_to_local 和夏令时

    gt e Event first gt e registration start utc registration start utc is a datetime column gt Sat 23 Oct 2010 06 38 00 UTC
  • 解决 Django 的 make_aware 中的 AmbigouslyTimeError

    我有一个代码如下 from django utils timezone import get current timezone make aware make aware some datetime get current timezone
  • MFC CMenu 工具提示未显示

    我尝试使用类似的东西来设置 CMenu 项的工具提示 如所述here https stackoverflow com questions 2400180 mfc how to add tooltip in cmenu items 但它只是显
  • _CrtDumpMemoryLeaks( ) == 1 在第一行代码上?

    我正在开发一个 MFC Visual C 项目 据我了解MSDN http msdn microsoft com en us library d41t22sb 28v VS 100 29 aspx CrtDumpMemoryLeaks 应该
  • 生成适用于不同时区和数据的计划

    我正在构建一个网络应用程序 指导人们早起 它会为用户生成七十天内的起床时间表 他们输入当前的上升时间和目标上升时间 然后 上升时间每周减少一定量 直到达到目标时间 用户必须登录网站并在预定时间 签到 考虑到当前登录用户的时区和夏令时 我对如
  • 捕获由纯 C++ dll 中的 MFC 应用程序生成的 Windows 消息

    首先 这可能吗 我有一个与某些硬件接口的第三方 dll 它是用MFC编写的 我 从 dll 供应商处 收到了一个示例 Visual Studio 2010 解决方案 该解决方案只有一个项目 调用相关第三方 dll 的 MFC 应用程序 ex

随机推荐

  • 详解MNIST数据集下载、解析及显示的Python实现

    Content MNIST数据集基本介绍 下载MNIST数据集到本地 解析MNIST数据集 显示MNIST数据集中训练集的前9张图片和标签 随着图像处理 计算机视觉 机器学习 甚至深度学习的蓬勃发展 一个良好的数据集作为学习和测试相关算法非
  • python编程基础-task4-FOR、IF以及while

    一 IF语句 avg 90 math 95 Chinese 85 if math lt Chinese print 语文更好 if math gt Chinese print 数学更好 Chinese 5 if avg Chinese pr
  • 实战:实现缓存和数据库一致性方案

    原创 微信公众号 阿Q说代码 欢迎分享 转载请保留出处 哈喽大家好 我是阿Q 最近不是正好在研究 canal 嘛 刚巧前两天看了一篇关于解决缓存与数据库一致性问题的文章 里边提到了一种解决方案是结合 canal 来操作的 所以阿Q就想趁热打
  • 中达优控触摸屏编程视频教程_触摸屏组态编程软件

    YKBuilder是一个中达优控触摸屏编程软件 触摸屏组态编程软件在电脑的开始菜单 打开运行对话框 输入 dcslic gt 确定启动 Licenses 管理工具 触摸屏组态编程软件 YKBuilder是中达优控YKHMI系列人机界面的集成
  • curl在windows的安装和使用

    经常看到别人在用curl命令可以请求各种网络请求在命令行里 看起来挺炫酷的 curl作为一个请求web服务器的命令行工具 玩得好甚至可以代替postman 这里我就是讲一下关于如何安装curl在windows上 毕竟很多时候用的电脑都是公司
  • LDAP未授权漏洞验证

    因为工作需要 这里验证了下LDAP未授权 以下是收集到的资料 最后是具体使用 更新 2 连接ad域有两个地址 ldap http XXXXX com 389 和 ldap http XXXXX com 636 SSL 3 端口389用于一般
  • 根据接口数据返回的不同字段显示不同背景颜色

    结构 div span item hldj substr 0 2 span substr 0 2 要抽取的子串的起始下标 从0开始截取2位 如南一公园只会显示南一 div 交互 methods toHldj item if item hld
  • 制作镜像并上传到阿里云

    run一个ubuntu容器 然后自动进入容器 ucsmy QKTEST21191 docker run it name node daocloud io ubuntu root 3ac09729dadb 安装geth sudo apt ge
  • 使用Bootstrap样式的死的简单Vue分页组件

    网页 vue pages A Dead Simple Vue Pagination Component Using Bootstrap Style 使用Bootstrap样式的死的简单Vue分页组件 support vue 2 0 支持vu
  • Unity的C#编程教程_52_类 Class 详解及应用练习(一)

    文章目录 C Classes for Behaviours Custom Classes 1 Custom Classes 2 Serialized Custom Class RPG Item Database Example 3 When
  • C++的tuple

    一 介绍 tuple是一个固定大小的不同类型值的集合 是泛化的std pair 我们也可以把它当做一个通用的结构体来用 不需要创建结构体又获取结构体的特征 在某些情况下可以取代结构体使程序更简洁 直观 std tuple理论上可以有无数个任
  • react项目配置@指向src文件夹

    react项目配置 指向src文件夹 react项目没有和vue一样有 指向src文件夹 需要手动配置 配置了之后 就代表 src 目录 就不用自己 暴露项目配置项 任选一种 npm方式 npm run eject cnpm方式 cnpm
  • C++获取电脑主板唯一标识

    获取电脑的唯一标识有很多好处 比如注册 授权等 而且电脑中有很多是唯一标识的硬件 比如网卡 CPU 硬盘 主板等 但是如果电脑中有两个网卡的话 就不知道使用哪个网卡作为唯一的了 可以通过获取主板的ID 作为唯一的标识 通常情况下 可以通过命
  • 无限法则服务器错误登录期间发生错误,无限法则错误126的解决方案分享 Error126错误提示...

    无限法则错误126的解决方案分享 Error126错误提示 许多玩家在玩游戏时遇到了Error126的情况 那么出现这个问题该怎么解决呢 无限法则Error126报错解决方法希望对大家有所帮助 问题描述 出现Error 126错误提示 12
  • win10 win11 远程连接 凭据不工作 无法建立连接

    Windows 远程连接 远程连接个人或者学校电脑 Windows系统 时经常遇到无法连接的情况 本文结合两种情况给出相应解决方法 No 1 问题描述 无法建立连接 未知连接错误 解决方法 查看目标ipv4地址是否正确 在windows W
  • 【JavaWeb学习】CSS(文本和图片)

    字体 color 前景色 用来设置字体的颜色 font size 字体大小 font family 字体族 指定字体的类别 浏览器自动使用该类别下的字体 可以同时指定多个字体 多个字体间用逗号隔开 前一个无法使用就用后一个 字体能否使用由用
  • (邱维声)高等代数课程笔记:极大线性无关组,向量组的秩

    极大线性无关组 向量组的秩 quad 一般地 设 V V V 是数域 K K K 上的一个线性空间
  • 好用的网络请求库Retrofit2(入门及讲解)

    前言 首先 先给出官网 GitHub Retrofit 官网 Retrofit 其次 要吐槽一下官网首页给出的例子 如果你照着例子改 会发现根本没法运行 不是少包就是少关键语句 相关内容可以参看我的另一篇文章 Retrofit 2 0 入门
  • 【论文翻译】边缘应用中加速卷积神经网络的剪枝算法综述

    摘要 随着卷积神经网络 CNN 模型大小的增加 模型压缩和加速技术对于在边缘设备上部署这些模型变得至关重要 在本文中 我们对修剪进行了全面的调查 这是一种主要的压缩策略 可以从CNN模型中删除非关键或冗余的神经元 调查涵盖了修剪的总体动机
  • VC++设置与取得系统音量

    MMRESULT rc 多媒体函数返回结果变量 HMIXER hMixer 混合器设备句柄 MIXERLINE mxl 音频线路标准状态信息结构体 MIXERLINECONTROLS mxlc 音频线路控制器集合信息结构体 MIXERCON