private static void AddCommand(AudioDeviceManager manager, ContextMenuStrip strip, AudioDeviceCollection devices, AudioDeviceState state) { foreach (AudioDevice device in devices.Where(d => d.State == state)) { ToolStripDropDown dropDown = strip.AddNestedCommand(new AudioDeviceCommand(manager, device)); if (device.State == AudioDeviceState.Active) { dropDown.AddCommand(new SetAsDefaultMultimediaDeviceCommand(manager, device)); dropDown.AddCommand(new SetAsDefaultCommunicationDeviceCommand(manager, device)); } } }
static void Main(string[] args) { List <Device> videoCaptureDevices = new List <Device>(); List <StudioDevice> audioOutputs = new List <StudioDevice>(); List <StudioDevice> audioInputs = new List <StudioDevice>(); DsDevice[] videoDevices = DirectShowLib.DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice); foreach (DsDevice dev in videoDevices) { string id = PrepareVideoId(dev); videoCaptureDevices.Add(new Device { category = "video", name = dev.Name, path = dev.DevicePath, id = id }); } // Load audio devices and set the correct selected ones var inputDevices = new AudioDeviceCollection(AudioDeviceCategory.Capture); audioInputs = inputDevices .Where(IsSelectableDevice) .Select(device => new StudioDevice { Id = $"{{0.0.1.00000000}}.{{{device.Guid}}}", Name = device.Description }).ToList(); var outputDevices = new AudioDeviceCollection(AudioDeviceCategory.Output); audioOutputs = outputDevices .Where(IsSelectableDevice) .Select(device => new StudioDevice { Id = $"{{0.0.0.00000000}}.{{{device.Guid}}}", Name = device.Description }).ToList(); generateJson(videoCaptureDevices, audioInputs, audioOutputs); }