How to stop windows resizing when the monitor display channel is turned off / switched to different source

Solution 1:

I have been digging around this problem for two days, and found few types of solutions:

  1. Universal solution, software program PersistentWindows, which saves all windows position and monitors display. If the resolution is changed and changed back, then it restores the same sizes and positions! Exactly what I wanted. The latest version just does its work, and silently sits in the systray. Link

  2. Fork of #1. but requires Windows 10 Creators Update. Better high DPI support. More CPU efficient. Link

  3. For some ATI users work, for some not, there are confirmations that it works. The solution is to use registry hack with key DMMEnableDDCPolling, to disable monitor connection polling under Windows at all. The caveat is that you need to restart the system after the change, and in case you need just quickly connect some external screen, it is not convenient. Link

  4. Lucky are NVIDIA card owners. The solution is to hardcode monitor EDID information to a VGA driver's onfile, and thus system thinks that this does not change. Managing a Display EDID on windows

  5. Hardware solution for HDMI connection, they sell their adapters on the web and also eBay. Link

  6. One more utility Windows Layout Manager to save the layouts and restore them on demand (management of various layouts). Much more complex and more powerful, but might be overkill to regular users. Link

I stick with #1 for a while (already since 2015 :) ), and if will find more, they will share.

Solution 2:

I had this issue with my Radeon R9, all I did was to disable the GPU scalling at AMD Catalyst.

But for some reason still occurs, first backup your registry! Then open your windows registry and go to:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration

Only under the "SIMULATED" or "NOEDID" keys (Windows 10), change the keys decimals to:

PrimSurfSize.cx = 1920
PrimSurfSize.cy = 1080

Under "00":

ActiveSize.cx = 1920
ActiveSize.cy = 1080

Change to what ever resolution you are using. This will prevent your window to shrink or move from one side to the other when you turn your monitor off.

Solution 3:

Your hunch is correct; the monitor is essentially shutting off the handshake on that HDMI channel when you switch the input. Windows 7 sees this as "There is no longer a monitor connected here", at which point it disables that output. Since that screen no longer exists, everything that was on it has to go SOMEWHERE, so it shuffles everything onto your remaining displays, and it is not graceful. When the display returns, Windows 7 will remember how you had things arranged to some extent, but it's not going to shuffle your windows back around (you may have closed or opened or otherwise moved them in the interim, after all!).

There's nothing you can do with display drivers that can fix this; it's the behavior of the operating system and while it's inconvenient for your situation it makes sense. (The alternative is having things on monitors that don't actually exist, which XP did sometimes and let me tell you it was a nightmare.) There may be some third party software that can force this to not occur, but I don't know of any offhand and I suspect you'd run the risk of causing other problems. (If anybody can actually post any I'll be glad to upvote those answers.)

Solution 4:

No additional hardware required

  1. Install TeamViewer or Chrome Remote desktop on the computer with the problem, and enable remote connections.
  2. Turn the TV/monitor off.
  3. The resolution changes on its own.
  4. Log into the computer remotely using the software from step 1. As stated in the question, the resolution has changed.
  5. Increase the resolution back to normal (as it is when the TV/monitor is on), using your remote connection.
  6. The resolution will no longer switch when the TV/monitor is turned off.