windows代码设置默认音频输出设备

更新时间:2023-05-23 15:15:07 阅读: 评论:0

windows代码设置默认⾳频输出设备1.windows⾳频输⼊设备与输出设备
1)windows中输⼊设备是指麦克风,如下图:
2)windows中⾳频输出设备是指扬声器,如下图:
2.有些时候,windows⾳频播放设备可能有多个,那么如何通过代码设置默认的⾳频输出设备呢?
法1:利⽤wave系列函数
新建windows控制台程序,加⼊如下代码:
1#include "stdafx.h"
2#include <windows.h>
3#include <mmsystem.h>
4#include <iostream>
5using namespace std;
6#pragma comment(lib, "Winmm.lib")
7
8#ifdef UNICODE
9#define tcout wcout
10#el
11#define tcout cout
12#endif
13
炸虾球的做法
14int _tmain(int argc, _TCHAR* argv[])
15{
16 int nSoundCardCount = waveOutGetNumDevs();
17
18 for (int i = 0; i < nSoundCardCount; i++)
19 {
20  WAVEOUTCAPS woc;
21  waveOutGetDevCaps(i, &woc, sizeof(woc));小锦鲤
22
23  tcout << woc.szPname << endl;
24 }
25
26 //waveOutMessage((HWAVEOUT)WAVE_MAPPER,WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE,1,0);
27
28 system("pau");
29 return 0;
30}
这⾥可以枚举出所有的播放设备,但是要设置默认的播放设备,暂时不知道怎么弄,⽹上说⽤waveOutMessage发送⼀个消息,但是那个消息windows中找不到,⽽且还是winCE的,所以只好放弃
法2:利⽤微软未公布的api实现
这⾥要⽤到PolicyConfig.h和SetDefaultAudioPlaybackDevice,⾃⾏添加.h⽂件和接⼝即可
1)PolicyConfig.h内容
1// ----------------------------------------------------------------------------
2// PolicyConfig.h
3// Undocumented COM-interface IPolicyConfig.
4// U for t default audio render endpoint
5// @author EreTIk
6// ----------------------------------------------------------------------------
1000澳元7
8
9#pragma once
10
11
12interface DECLSPEC_UUID("f8679f50-850a-41cf-9c72-430f290290c8")
13IPolicyConfig;
14class DECLSPEC_UUID("870af99c-171d-4f9e-af0d-e63df40c2bc9")
15CPolicyConfigClient;
16// ----------------------------------------------------------------------------
17// class CPolicyConfigClient
18// {870af99c-171d-4f9e-af0d-e63df40c2bc9}
19//
20// interface IPolicyConfig
21// {f8679f50-850a-41cf-9c72-430f290290c8}
22//
23// Query interface:
24// CComPtr<IPolicyConfig> PolicyConfig;
25// PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigClient)); 26//
27// @compatible: Windows 7 and Later
28// ----------------------------------------------------------------------------
29interface IPolicyConfig : public IUnknown
30{
31public:
32
33    virtual HRESULT GetMixFormat(
34        PCWSTR,
35        WAVEFORMATEX **
36    );
37
38    virtual HRESULT STDMETHODCALLTYPE GetDeviceFormat(
39        PCWSTR,
40        INT,
41        WAVEFORMATEX **
42    );
43
44    virtual HRESULT STDMETHODCALLTYPE RetDeviceFormat(
45        PCWSTR
46    );
47
48    virtual HRESULT STDMETHODCALLTYPE SetDeviceFormat(
49        PCWSTR,
50        WAVEFORMATEX *,
51        WAVEFORMATEX *
52    );
53
54    virtual HRESULT STDMETHODCALLTYPE GetProcessingPeriod(
55        PCWSTR,
发明故事56        INT,
57        PINT64,
58        PINT64
59    );
60
61    virtual HRESULT STDMETHODCALLTYPE SetProcessingPeriod(
62        PCWSTR,
63        PINT64
64    );
65
66    virtual HRESULT STDMETHODCALLTYPE GetShareMode(
67        PCWSTR,
68        struct DeviceShareMode *
69    );
70
71    virtual HRESULT STDMETHODCALLTYPE SetShareMode(
72        PCWSTR,
73        struct DeviceShareMode *
74    );
75
76    virtual HRESULT STDMETHODCALLTYPE GetPropertyValue(
77        PCWSTR,
78        const PROPERTYKEY &,
79        PROPVARIANT *
80    );
81
82    virtual HRESULT STDMETHODCALLTYPE SetPropertyValue(
83        PCWSTR,
84        const PROPERTYKEY &,
85        PROPVARIANT *
86    );
87
88    virtual HRESULT STDMETHODCALLTYPE SetDefaultEndpoint(
89        __in PCWSTR wszDeviceId,
90        __in ERole eRole
91    );
92
93    virtual HRESULT STDMETHODCALLTYPE SetEndpointVisibility(
94        PCWSTR,
95        INT
96    );
97};
98
99interface DECLSPEC_UUID("568b9108-44bf-40b4-9006-86afe5b5a620") 100IPolicyConfigVista;
101class DECLSPEC_UUID("294935CE-F637-4E7C-A41B-AB255460B862") 102CPolicyConfigVistaClient;
103// ----------------------------------------------------------------------------
104// class CPolicyConfigVistaClient
105// {294935CE-F637-4E7C-A41B-AB255460B862}
106//
107// interface IPolicyConfigVista
108// {568b9108-44bf-40b4-9006-86afe5b5a620}
109//
110// Query interface:
111// CComPtr<IPolicyConfigVista> PolicyConfig;
112// PolicyConfig.CoCreateInstance(__uuidof(CPolicyConfigVistaClient)); 113//
114// @compatible: Windows Vista and Later
115// ----------------------------------------------------------------------------
116interface IPolicyConfigVista : public IUnknown
117{
118public:
119
120    virtual HRESULT GetMixFormat(
121        PCWSTR,
西装怎么洗
122        WAVEFORMATEX **
123    );  // not available on Windows 7, u method from IPolicyConfig
124
125    virtual HRESULT STDMETHODCALLTYPE GetDeviceFormat(
126        PCWSTR,
127        INT,
128        WAVEFORMATEX **
129    );
130
131    virtual HRESULT STDMETHODCALLTYPE SetDeviceFormat(
132        PCWSTR,
133        WAVEFORMATEX *,
134        WAVEFORMATEX *
135    );
136
137    virtual HRESULT STDMETHODCALLTYPE GetProcessingPeriod( 138        PCWSTR,
139        INT,
140        PINT64,
141        PINT64
142    );  // not available on Windows 7, u method from IPolicyConfig
143
144    virtual HRESULT STDMETHODCALLTYPE SetProcessingPeriod(
145        PCWSTR,
146        PINT64
147    );  // not available on Windows 7, u method from IPolicyConfig
148
149    virtual HRESULT STDMETHODCALLTYPE GetShareMode(
150        PCWSTR,
151        struct DeviceShareMode *
152    );  // not available on Windows 7, u method from IPolicyConfig
153
查流量怎么查154    virtual HRESULT STDMETHODCALLTYPE SetShareMode(
155        PCWSTR,
156        struct DeviceShareMode *
reason模型
157    );  // not available on Windows 7, u method from IPolicyConfig
158
159    virtual HRESULT STDMETHODCALLTYPE GetPropertyValue(
160        PCWSTR,
161        const PROPERTYKEY &,
162        PROPVARIANT *
163    );
164
165    virtual HRESULT STDMETHODCALLTYPE SetPropertyValue(
166        PCWSTR,
167        const PROPERTYKEY &,
168        PROPVARIANT *
169    );
170
171    virtual HRESULT STDMETHODCALLTYPE SetDefaultEndpoint(
172        __in PCWSTR wszDeviceId,
173        __in ERole eRole
174    );
175
176    virtual HRESULT STDMETHODCALLTYPE SetEndpointVisibility(
177        PCWSTR,
178        INT
周记四年级
179    );  // not available on Windows 7, u method from IPolicyConfig
180};
2)添加头⽂件和接⼝
1#include "Mmdeviceapi.h"
2#include "PolicyConfig.h"
3#include "Propidl.h"
4#include "Functiondiscoverykeys_devpkey.h"
1HRESULT SetDefaultAudioPlaybackDevice( LPCWSTR devID )
2{
3 IPolicyConfigVista *pPolicyConfig;
4 ERole rerved = eConsole;
5
6 HRESULT hr = CoCreateInstance(__uuidof(CPolicyConfigVistaClient),
7  NULL, CLSCTX_ALL, __uuidof(IPolicyConfigVista), (LPVOID *)&pPolicyConfig);
8 if (SUCCEEDED(hr))
9 {
10  hr = pPolicyConfig->SetDefaultEndpoint(devID, rerved);
11  pPolicyConfig->Relea();
12 }
13 return hr;
14}
3)利⽤上⾯的接⼝⾃⼰写函数来设置默认输出设备
这⾥是⾃⼰添加的设置默认输出设备函数(MFC⼯程)
1//设置默认⾳频播放设备

本文发布于:2023-05-23 15:15:07,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/746632.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:默认   设置   消息   设备   输出设备   播放   程序
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图