如何在 Process_System_DPI_Aware 中获得多显示器分辨率

How to get multi-monitor resolution in Process_System_DPI_Aware

我正在为 Firefox 制作插件。 Firefox 设置为 Process_System_DPI_Aware。我有监视器的句柄,是否有可能得到正确的监视器?

到目前为止,我尝试过的所有方法都提供了主显示器的 DPI。

我想使用 LogicalToPhysicalPointForPerMonitorDPI,因为它说它应该可以工作,但是我没有 window 来提供该功能。第二台显示器上没有 windows。我正在尝试截取该桌面的屏幕截图。

谢谢

您正在使用每个显示器的 dpi 设置,但您的进程不是每个显示器的 dpi 感知的。因此,您的辅助显示器具有 dpi 虚拟化。

您应该从每个监视器 dpi 感知进程执行屏幕截图代码。

您可以创建不可见 window,使用 EnumDisplayMonitors 枚举监视器,使用 GetMonitorInfo 获取虚拟化矩形,为每个监视器移动和调整不可见 window 全屏大小,并使用 LogicalToPhysicalPointForPerMonitorDPI 获取真实监视器矩形。