Set monitor profile/resolution based on whether a laptop is docked or not?

12

1

I'm working on this for a user here at work, but figured it was better suited on SU vs SF.

The user has a Surface Pro 3 connected to the Surface dock which has an external monitor connected.

The problem is that the external monitor's resolution is 1600x900 whereas the Surface Pro 3's resolution is much higher at 2160x1440. So when using both monitors and moving windows between monitors the text and windows size tends to change drastically.

An example discussion of the issues associated with this and the default "scaling" can be found here,

The user can set his Surface Pro to 1600x900 temporarily and change the scaling to 100%, but it isn't ideal long term or away from the office.

I know about DisplayFusion Pro, Ultramon, etc. that allow you to save custom monitor profiles and then apply them via keystroke, menu choice, etc.

My question is:

Short of buying a new external monitor for him that can match the Surface's resolution, is there a way to have Windows change the resolution of the Surface automatically based on whether it is docked or not? If not, he could live with DisplayFusion Pro or Ultramon, but I was hoping to provide him with something more plug and play where he isn't required to do anything short of dock/undock.

TheCleaner

Posted 2014-12-08T22:29:20.770

Reputation: 2 302

1

Possibly use WMI to watch the docking state of the machine and use Ultramon's command line functionality to switch between profiles?

– I say Reinstate Monica – 2015-05-23T16:15:26.337

Answers

0

It is not possible to set the screen scaling for individual monitors in Windows 7 och 8.x. This is a feature that comes in the upcoming Windows 10 release. As Windows 10 will be released within a month and is avaliable as a preview at the moment I would suggest you install the preview or wait for the release to solve your problem.

Per Salmi

Posted 2014-12-08T22:29:20.770

Reputation: 749

0

This wouldn't be the easiest solution, but what should work is using the task scheduler. First, check the event logs, I would imagine that something as significant as a dock connecting or disconnecting would be logged somewhere there. Once you've found the event for the docking, click on it, and you should have the option to attach a task to this event. Then, in the action of the task, trigger the resolution change (see Any way of changing Windows screen resolution via command line? ), at least one of those methods should work with Windows 8. Then just do the same thing again but for the undocking event. It's a bit of work to set up at the beginning, but once that's done, it should work pretty seamlessly.

trainman261

Posted 2014-12-08T22:29:20.770

Reputation: 311