using System; using System.Drawing; public static class DisplayFusionFunction { public static void Run(IntPtr windowHandle) { //a string to read and write script settings const string audioDeviceIndex = "Script_SelectSpecificAudioDevice_Index"; //read the setting in and try to convert it to an integer int index; if(!Int32.TryParse(BFS.ScriptSettings.ReadValue(audioDeviceIndex), out index)) index = 0; //NOTE: add a list of the audio devices you want in this array string[] audioDevices = {"Speakers", "Headset"}; //increment the index and use the mod operator //to keep it in the array bounds index = ++index % audioDevices.Length; //search for the current index in the list of audio devices string[] allDevices = BFS.Audio.GetPlaybackDevices(); foreach (string device in allDevices) { //if we didnt find it, continue to the next one if (device.IndexOf(audioDevices[index], StringComparison.OrdinalIgnoreCase) == -1) continue; //if we got this far, we found it! //set the playback and communications device and exit the loop BFS.Audio.SetDefaultPlaybackSounds(device); BFS.Audio.SetDefaultPlaybackCommunications(device); break; } //save the currently selected index BFS.ScriptSettings.WriteValue(audioDeviceIndex, "" + index); } }