using System;
using System.Drawing;
using System.Runtime.InteropServices;
//
// Modification of "Switch Monitor Profiles and Launch Steam in Big Picture Mode" by: orlando2bjr
//
// The 'windowHandle' parameter will contain the window handle for the:
// - Active window when run by hotkey
// - Window Location target when run by a Window Location rule
// - TitleBar Button owner when run by a TitleBar Button
// - Jump List owner when run from a Taskbar Jump List
// - Currently focused window if none of these match
public static class DisplayFusionFunction
{
//replace these variables with ones that will work on your system
const string defaultProfile = "[your default profile]";
const string bigPictureProfile = "[your big picture profile]";
public static void Run(IntPtr windowHandle)
{
while (true)
{
if (IsBigPictureRunning())
{
SteamBP();
}
else
{
DefaultProfile();
}
System.Threading.Thread.Sleep(5000);
}
}
[DllImport("user32.dll",EntryPoint="FindWindow")]
private static extern int FindWindow(string sClass, string sWindow);
private static bool IsBigPictureRunning()
{
return FindWindow("CUIEngineWin32", "Steam") != 0;
}
private static void SteamBP()
{
// wake up the monitors
BFS.General.WakeMonitors();
// load the big picture monitor profile and wait for it to switch
BFS.DisplayFusion.LoadMonitorProfile(bigPictureProfile);
string profileName = BFS.DisplayFusion.GetCurrentMonitorProfile();
while(!profileName.Equals(bigPictureProfile, StringComparison.OrdinalIgnoreCase))
{
BFS.General.ThreadWait(100);
profileName = BFS.DisplayFusion.GetCurrentMonitorProfile();
}
}
private static void DefaultProfile()
{
// wake up the monitors
BFS.General.WakeMonitors();
// load the last running monitor profile and wait for it to switch
BFS.DisplayFusion.LoadMonitorProfile(defaultProfile);
}
}