How to get the actual MonitorPosition, particularly with Windows scaling and changin monitor configurations?

Hi,
we are usually working using laptops and external 1 or 2 monitors, such we have 1-3 monitors. Sometimes (e.g. when removing the laptop from the docking station), the number of monitors changes during a running MATLAB session. We need to position a number of figures and need the monitor positions at the current time for this. However,
get(0, 'MonitorPositions' )
seems to always return the monitor configuration at the time MATLAB was started.
We already tried to implement a workaround using Java (java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment ...) but we don't get the correct positions via this way when Windows Scaling (125% or 150%) ist used.
Is there any way to always get the correct monitor position, even with windos scaling and changing monitor positions during a running MATLAB session?

3 Comments

Following link might prove helpful:
https://www.mathworks.com/matlabcentral/answers/101277-is-it-possible-to-force-matlab-to-bring-up-figure-windows-on-the-primary-monitor-or-in-a-specific-po
How is the "correct" position defined, when Windows scales the output?
Perhaps https://www.mathworks.com/matlabcentral/fileexchange/31437-windowapi is useful under Windows. But I do not have much experiences with scaling.
Hi,
Please find a fix as below. It was tried and found working in our setup with secondary monitor
if we require units in pixels, use
set(0,'units','pixels');
get(0,'MonitorPositions');
Regards,
Kanthaswamy

Sign in to comment.

Answers (0)

Categories

Products

Asked:

on 29 Sep 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!