Processing Ajax...

Title

Message

Confirm

Confirm

Confirm

Confirm

Are you sure you want to delete this item?

Confirm

Are you sure you want to delete this item?

Confirm

Are you sure?

Change Between Multiple Audio Devices by Wildcard

Description
Enter the partial device names on line 17 (in the audioDevices string array). When you run this function, it will switch between each device that matches the text in the array.
Language
C#.net
Minimum Version
Created By
Thomas Malloch (BFS)
Contributors
-
Date Created
Feb 28, 2017
Date Last Modified
Feb 28, 2017

Scripted Function (Macro) Code

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);
	}
}