如何识别内部屏幕分辨率启用的多个显示



我已经在Google上搜索了,但没有找到答案,因此,如果有人知道这将非常感谢!

我想使用命令行或一些winapi检查多个显示的状态。例如:如果我设置:"扩展屏幕"或"重复屏幕",我希望能够验证它。只是不知道从哪里开始。

非常感谢

我将从Winapi EnumdisPlayMonitors函数开始:http://msdn.microsoft.com/en-us/library/dd162610(vs.85).85).aspx

BOOL EnumDisplayMonitors(
  _In_  HDC hdc,
  _In_  LPCRECT lprcClip,
  _In_  MONITORENUMPROC lpfnEnum,
  _In_  LPARAM dwData
);

您需要调用此功能将前两个参数设置为null:

EnumDisplayMonitors(NULL, NULL, MyPaintEnumProc, 0);
//Enumerates all display monitors.
//The callback function receives a NULL HDC.

现在您拥有MonitorEnumProc回调函数:http://msdn.microsoft.com/en-us/library/dd145061(v=vs.85).aspx

BOOL CALLBACK MonitorEnumProc(
  _In_  HMONITOR hMonitor,
  _In_  HDC hdcMonitor,
  _In_  LPRECT lprcMonitor,
  _In_  LPARAM dwData
);

您可以填写lprcmonitor:

指向矩形结构的指针。 如果hdcmonitor是非null,则此矩形是HDCMonitor和HDCMonitor和 显示监视器矩形。矩形坐标是 设备-Context坐标。

If hdcMonitor is NULL, this rectangle is the display monitor rectangle. The rectangle coordinates are virtual-screen coordinates.

基于所有监视器的此值,您可以决定您是否具有扩展模式(Rects不同)还是重复(它们相等)。

hth-祝你好运!

最新更新