def monitor__find_monitors():
ret = []
def callback(h_monitor, hdc_monitor, lprc_monitor, lParam):
# hMonitor: display monitor handle
# hdcMonitor: device context handle; color attributes + clipping region
# lprcMonitor: RECT structure w/ device-context coordinates.
ret.append({
'monitor_handle': h_monitor,
'device_context_handle': hdc_monitor,
'left': lprc_monitor.contents.left,
'right': lprc_monitor.contents.right,
'top': lprc_monitor.contents.top,
'bottom': lprc_monitor.contents.bottom,
'width': lprc_monitor.contents.right - lprc_monitor.contents.left,
'height': lprc_monitor.contents.bottom - lprc_monitor.contents.top,
'primary': len(ret) == 0,
'index': len(ret),
})
return True
enum_monitor_proc = WINFUNCTYPE(c_bool, POINTER(c_int), POINTER(c_int), POINTER(wintypes.RECT), POINTER(c_int))
if EnumDisplayMonitors(None, None, enum_monitor_proc(callback), None) == 0:
raise Exception("Could not find monitors")
# for i in ret:
# info = POINTER(wintypes.MONITORINFOEX())
# if GetMonitorInfo(i['monitor_handle'], info) != 0:
# i['primary'] = info.contents.dwFlags == MONITORINFOF_PRIMARY
# i['name'] = str(info.contents.szDevice)
return ret
评论列表
文章目录