我想知道,如果我想要切換麥克風的靜音/取消靜音,編碼會是什麼。我正在製作一個程序,可以在後臺運行並獲取按鍵事件並切換麥克風的靜音/取消靜音。任何有關編碼的幫助都會非常有幫助。我對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