'Get positions of one or more monitors.
Returns a dict with minimal requirements.'

def enum_display_monitors(self, screen=(-1)):

    if (screen == (-1)):
        (SM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN) = (76, 77)
        (SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN) = (78, 79)
        left = windll.user32.GetSystemMetrics(SM_XVIRTUALSCREEN)
        right = windll.user32.GetSystemMetrics(SM_CXVIRTUALSCREEN)
        top = windll.user32.GetSystemMetrics(SM_YVIRTUALSCREEN)
        bottom = windll.user32.GetSystemMetrics(SM_CYVIRTUALSCREEN)
        (yield {'left': int(left), 'top': int(top), 'width': int((right - left)), 'height': int((bottom - top))})
    else:
        def _callback(monitor, dc, rect, data):
            '    Callback    for    MONITORENUMPROC()    function,    it    will    return\n                                                                                a    RECT    with    appropriate    values.\n                                                                '
            rct = rect.contents
            monitors.append({'left': int(rct.left), 'top': int(rct.top), 'width': int((rct.right - rct.left)), 'height': int((rct.bottom - rct.top))})
            return 1
        monitors = []
        callback = self.MONITORENUMPROC(_callback)
        windll.user32.EnumDisplayMonitors(0, 0, callback, 0)
        for mon in monitors:
            (yield mon)
