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?

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