using System;
using System.Drawing;
using System.Windows.Forms;
using System.Management;
//Code brought to you by: solaris765
//Because numbers after my screen name are fun.
//Automatically changes Monitor Profile based on resolution changes.
//
// 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
{
public static void Run(IntPtr windowHandle)
{
int maxHRes = getMaxResolution();
BFS.Dialog.ShowMessageInfo(maxHRes.ToString());
// default Resolution
if (maxHRes == 1920)
{
BFS.DisplayFusion.LoadMonitorProfile("Default");
//BFS.DisplayFusion.LoadMonitorProfile("Nvidia Surround");
BFS.Dialog.ShowMessageInfo("Success");
}
// nVidia Surround / AMD Eyefinity
else if (maxHRes > 1920)
{
BFS.DisplayFusion.LoadMonitorProfile("Nvidia Surround");
BFS.Dialog.ShowMessageInfo("What?");
}
}
public static int getMaxResolution()
{
//Must include: using System.Management;
ManagementScope scope = new ManagementScope();
ObjectQuery query = new ObjectQuery("SELECT * FROM CIM_VideoControllerResolution");
int hRes = 0;
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
{
ManagementObjectCollection results = searcher.Get();
int temp;
foreach (ManagementBaseObject result in results)
{
temp = Convert.ToInt32(result["HorizontalResolution"]);
if (temp > hRes)
hRes = temp;
}
}
return hRes;
}
}