Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Update Monitor Profile Based on Primary Resolution

Description
Automatically changes Monitor Profile based on resolution changes.
Language
C#.net
Minimum Version
Created By
solaris765
Contributors
-
Date Created
Jan 2, 2015
Date Last Modified
Apr 14, 2015

Scripted Function (Macro) Code

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