PDA

Просмотр полной версии : [Решение] Как отключить микрофон


Serx91
20.04.2015, 15:16
в продолжение темы [Ссылки могут видеть только зарегистрированные и активированные пользователи]
В общем первое, что нам понадобиться это скачать библиотеку с официального сайта ее создателя(ей)
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Download справа, фиолетовая кнопка
И подключить ее к проекту(надеюсь знаете как /dgs)
Исправлено на рабочую версию(сори за то, что вам не придется напрягаться и вникать в код:d)
Данный код, должен отключать все активные микрофоны, отключать - вырубать звук.
Примечание: Проверенно на Windows 7
Далее, комментарии в коде

using System;
using NAudio.CoreAudioApi;

namespace ConsoleApplication1
{
class Program
{
static void Main()
{
CoreAudioMicMute CAMM = new CoreAudioMicMute();
CAMM.SetMute(true);
Console.ReadKey();
}

internal class CoreAudioMicMute
{

private MMDevice[] rgMicDevice; //Для записи найденных для нас устройств
int MaxMicro = 0;

public CoreAudioMicMute()
{
MMDeviceEnumerator DevEnum = new MMDeviceEnumerator();

MMDeviceCollection devices = DevEnum.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active); // DataFlow.Capture - Микрофоны(или устройства в которые поступает звук), DeviceState.Active - Активные устройства



// Поиск активных устройств(для нас микрофонов)
MaxMicro = 0;
for (int i = 0; i < devices.Count; i++) // devices.Count - количество устройств(активные микрофоны)
{
MMDevice deviceAt = devices[i];
if (deviceAt.DataFlow == DataFlow.Capture && deviceAt.State == DeviceState.Active)
{
++MaxMicro;
}
}
// Заносим в массив (все) найденный(ые) микрофон(ы) или другие устройства(динамики, наушники или др)
rgMicDevice = new MMDevice[MaxMicro];
MaxMicro = 0;
for (int i = 0; i < devices.Count; i++)
{
MMDevice deviceAt = devices[i];
if (deviceAt.DataFlow == DataFlow.Capture && deviceAt.State == DeviceState.Active)
{
MaxMicro++;
rgMicDevice[MaxMicro - 1] = deviceAt;
}
}

if (MaxMicro == 0)//Если не найден ни один микрофон(устройство)
throw new InvalidOperationException("Микрофон не найден!"); //Было в коде, от куда я взял. Можно поменять на что угодно!!! ;)


}

public void SetMute(bool mute) //Функция, отключающая звук устройств записанных в массив private MMDevice[] rgMicDevice
{
for (int i = 0; i < MaxMicro; i++)
{
rgMicDevice[i].AudioEndpointVolume.Mute = mute; //= true - выключить звук устройства(для нас микрофона)
}
}

}


}
}

Вот и все:)

Добавлено через 1 час 17 минут
Как проверить, отключен ли микрофон(если он есть конечно). Панель управления->Оборудование и звук->(Звук)Изменение системных звуков->Запись Нажимаем на рабочий микрофон->свойства->уровни
В общем если вы написали в коде Ваш микрофон правильно, то звук микрофона должен выключиться.

Добавлено через 20 часов 39 минут
Как вы поняли, если читали комментарии в коде, можно настроить и на отключение наушников и колонок. Ну, а остальное догадаетесь сами;)

Serx91
28.04.2015, 09:42
Мда, хотел поделиться, а мне минус за это. Естественно не помогло, я сам код не один час разбирал. Попробую сейчас выделить, что нужно менять в коде, чтобы заработало.
Примечание: У меня Windows 7, на остальных не знаю, будет работать или нет.

Добавлено через 1 час 9 минут
И еще мда - забыл, как сам раньше искал код рабочей программы... чем проще, тем понятней. В след раз постараюсь писать по понятней и универсальней.

Sinyss
28.04.2015, 11:08
Мда, хотел поделиться, а мне минус за это. Естественно не помогло, я сам код не один час разбирал. Попробую сейчас выделить, что нужно менять в коде, чтобы заработало.
Примечание: У меня Windows 7, на остальных не знаю, будет работать или нет.

Добавлено через 1 час 9 минут
И еще мда - забыл, как сам раньше искал код рабочей программы... чем проще, тем понятней. В след раз постараюсь писать по понятней и универсальней.

Чувак, те кто шарит как кодить(в общем) сами могут скачать библиотеку и вызвать 1 функцию и им это просто не интересно. А те кто до этого дойти не могут нуждаются в более детальном объяснении, например с момента "как создать проект". Так что ты промахнулся мимо обоих категорий )

Serx91
28.04.2015, 11:32
Чувак, те кто шарит как кодить(в общем) сами могут скачать библиотеку и вызвать 1 функцию и им это просто не интересно. А те кто до этого дойти не могут нуждаются в более детальном объяснении, например с момента "как создать проект". Так что ты промахнулся мимо обоих категорий )
Хех, да я понимаю, точнее вспомнил жизнь) до момента, как пожелал стать программистом ;) Надо было видео заснять, тогда плюсов было бы мильон))))

Добавлено через 49 минут
Да чего уж там, я даже если сейчас наткнусь на нужный мне код программы, я в упор не пойму, что это то, что мне нужно)))

Добавлено через 51 минуту
И пролистаю десятки сайтов, пока не найду мне нужное, а потом, еще и вспомню, что видел уже где такое)).