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 минут
Как вы поняли, если читали комментарии в коде, можно настроить и на отключение наушников и колонок. Ну, а остальное догадаетесь сами;)
В общем первое, что нам понадобиться это скачать библиотеку с официального сайта ее создателя(ей)
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
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 минут
Как вы поняли, если читали комментарии в коде, можно настроить и на отключение наушников и колонок. Ну, а остальное догадаетесь сами;)