我想知道,如果我想要切换麦克风的静音/取消静音,编码会是什么。我正在制作一个程序,可以在后台运行并获取按键事件并切换麦克风的静音/取消静音。任何有关编码的帮助都会非常有帮助。我对C#很新,而这只是我想做的一个非常简单的程序。这就是它的全部功能,它是否会听取空格键的按键,即使程序在后台,当空格键被按下时,它将使麦克风静音/取消静音。如何静音麦克风c#
谢谢你的帮助!
我想知道,如果我想要切换麦克风的静音/取消静音,编码会是什么。我正在制作一个程序,可以在后台运行并获取按键事件并切换麦克风的静音/取消静音。任何有关编码的帮助都会非常有帮助。我对C#很新,而这只是我想做的一个非常简单的程序。这就是它的全部功能,它是否会听取空格键的按键,即使程序在后台,当空格键被按下时,它将使麦克风静音/取消静音。如何静音麦克风c#
谢谢你的帮助!
您可以下载已静音麦克风整个应用程序的来源,选择它作为记录装置等
http://www.codeguru.com/csharp/csharp/cs_graphics/sound/article.php/c10931/
可以使用MCI(Media Control Interface)来访问话筒,改变他们的体积系统明智。检查下面的代码,应将所有系统麦克风的音量设置为0。代码在c;检查pinvoke关于如何翻译这个代码转换为C#
#include "mmsystem.h"
...
void MuteAllMics()
{
HMIXER hmx;
mixerOpen(&hmx, 0, 0, 0, 0);
// Get the line info for the wave in destination line
MIXERLINE mxl;
mxl.cbStruct = sizeof(mxl);
mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
mixerGetLineInfo((HMIXEROBJ)hmx, &mxl, MIXER_GETLINEINFOF_COMPONENTTYPE);
// find the microphone source line connected to this wave in destination
DWORD cConnections = mxl.cConnections;
for (DWORD j=0; j<cConnections; j++)
{
mxl.dwSource = j;
mixerGetLineInfo((HMIXEROBJ)hmx, &mxl, MIXER_GETLINEINFOF_SOURCE);
if (MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE == mxl.dwComponentType)
{
// Find a volume control, if any, of the microphone line
LPMIXERCONTROL pmxctrl = (LPMIXERCONTROL)malloc(sizeof MIXERCONTROL);
MIXERLINECONTROLS mxlctrl =
{
sizeof mxlctrl,
mxl.dwLineID,
MIXERCONTROL_CONTROLTYPE_VOLUME,
1,
sizeof MIXERCONTROL,
pmxctrl
};
if (!mixerGetLineControls((HMIXEROBJ) hmx, &mxlctrl, MIXER_GETLINECONTROLSF_ONEBYTYPE))
{
DWORD cChannels = mxl.cChannels;
if (MIXERCONTROL_CONTROLF_UNIFORM & pmxctrl->fdwControl)
cChannels = 1;
LPMIXERCONTROLDETAILS_UNSIGNED pUnsigned = (LPMIXERCONTROLDETAILS_UNSIGNED)
malloc(cChannels * sizeof MIXERCONTROLDETAILS_UNSIGNED);
MIXERCONTROLDETAILS mxcd =
{
sizeof(mxcd),
pmxctrl->dwControlID,
cChannels,
(HWND)0,
sizeof MIXERCONTROLDETAILS_UNSIGNED,
(LPVOID) pUnsigned
};
mixerGetControlDetails((HMIXEROBJ)hmx, &mxcd, MIXER_SETCONTROLDETAILSF_VALUE);
// Set the volume to the middle (for both channels as needed)
//pUnsigned[0].dwValue = pUnsigned[cChannels - 1].dwValue = (pmxctrl->Bounds.dwMinimum+pmxctrl->Bounds.dwMaximum)/2;
// Mute
pUnsigned[0].dwValue = pUnsigned[cChannels - 1].dwValue = 0;
mixerSetControlDetails((HMIXEROBJ)hmx, &mxcd, MIXER_SETCONTROLDETAILSF_VALUE);
free(pmxctrl);
free(pUnsigned);
}
else
{
free(pmxctrl);
}
}
}
mixerClose(hmx);
}
here你可以找到关于此主题的
希望这可以帮助更多的代码细节,视
对于Windows Vista和较新的,你可以没有如果更长时间使用媒体控制接口,Microsoft将有一个新的Core Audio API,您必须访问这些接口才能在这些较新的操作系统中与音频硬件接口。
雷Molenkamp研究写了一个不错的托管包装用的核心音频API这里的接口: Vista Core Audio API Master Volume Control
因为我需要能够静音从XP,Vista和Windows 7我写了一个小Windows Microphone Mute Library它使用麦克风雷的图书馆在较新的操作系统和Gustavo Franco's MixerNative library的Windows XP和更旧的部分。
感谢您的图书馆,正是我需要的。 :) – 2012-08-18 12:34:41
链接现在被打破 – ickydime 2016-03-24 18:28:34
您可以使用该https://www.nuget.org/packages/AudioSwitcher.AudioApi.CoreAudio/4.0.0-alpha5 – 2017-02-06 03:55:07
我在win7和类中有几个麦克风WindowsMicrophoneMuteLibrary.CoreAudioMicMute在这种情况下是不正确的。
所以我改变了代码,并且工作得很好,因为现在他的杯子吹口哨所有的麦克风,而不仅仅是在最后由win7识别。
我附加了新班级。
http://www.developpez.net/forums/d1145354/dotnet/langages/csharp/couper-micro-sous-win7/
这是如何帮助麦克风静音? – Michael 2012-11-08 05:02:39
P.S.它还可以静音单个设备,因为我正在“听”麦克风,或者通过计算机的扬声器播放它,因此Windows Vista和7将使用音量混合器显示单个程序,因此如果有方法编程静音/取消静音单个程序,该方法也可以工作。 – Sean 2010-01-16 21:37:39