Beispiel #1
0
def GetDisplayModes():
    res = []
    displayDevice = DISPLAY_DEVICE()
    displayDevice.cb = sizeof(DISPLAY_DEVICE)
    devMode = DEVMODE()
    devMode.dmSize = sizeof(DEVMODE)
    iDevNum = 0
    while True:
        if EnumDisplayDevices(None, iDevNum, pointer(displayDevice), 0) == 0:
            break
        iDevNum += 1
        if displayDevice.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER:
            continue
        EnumDisplaySettingsEx(
            displayDevice.DeviceName,
            ENUM_CURRENT_SETTINGS,
            pointer(devMode),
            0
        )
        displayMode = (
            displayDevice.DeviceName,
            devMode.dmPosition.x,
            devMode.dmPosition.y,
            devMode.dmPelsWidth,
            devMode.dmPelsHeight,
            devMode.dmDisplayFrequency,
            devMode.dmBitsPerPel,
            bool(
                displayDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP
            ),
            bool(displayDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE),
            devMode.dmDisplayFlags,
        )
        res.append(displayMode)
    return tuple(res)
Beispiel #2
0
def GetDisplayModes():
    res = []
    displayDevice = DISPLAY_DEVICE()
    displayDevice.cb = sizeof(DISPLAY_DEVICE)
    devMode = DEVMODE()
    devMode.dmSize = sizeof(DEVMODE)
    iDevNum = 0
    while True:
        if EnumDisplayDevices(None, iDevNum, pointer(displayDevice), 0) == 0:
            break
        iDevNum += 1
        if displayDevice.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER:
            continue
        EnumDisplaySettingsEx(
            displayDevice.DeviceName,
            ENUM_CURRENT_SETTINGS,
            pointer(devMode),
            0
        )
        displayMode = (
            displayDevice.DeviceName,
            devMode.dmPosition.x,
            devMode.dmPosition.y,
            devMode.dmPelsWidth,
            devMode.dmPelsHeight,
            devMode.dmDisplayFrequency,
            devMode.dmBitsPerPel,
            bool(
                displayDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP
            ),
            bool(displayDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE),
            devMode.dmDisplayFlags,
        )
        res.append(displayMode)
    return tuple(res)
Beispiel #3
0
 def GetDisplayModes(self, allModes=False):
     devMode = DEVMODE()
     devMode.dmSize = sizeof(DEVMODE)
     lpDevMode = pointer(devMode)
     modes = {}
     if allModes:
         flag = EDS_RAWMODE
     else:
         flag = 0
     iModeNum = 0
     while 0 != EnumDisplaySettingsEx(self.deviceName, iModeNum, lpDevMode, flag):
         iModeNum += 1
         resolution = (devMode.dmPelsWidth, devMode.dmPelsHeight)
         deepthDict = modes.setdefault(resolution, {})
         frequencyList = deepthDict.setdefault(devMode.dmBitsPerPel, [])
         frequencyList.append(devMode.dmDisplayFrequency)
     return modes
Beispiel #4
0
 def GetDisplayModes(self, allModes=False):
     devMode = DEVMODE()
     devMode.dmSize = sizeof(DEVMODE)
     lpDevMode = pointer(devMode)
     modes = {}
     if allModes:
         flag = EDS_RAWMODE
     else:
         flag = 0
     iModeNum = 0
     while 0 != EnumDisplaySettingsEx(
         self.deviceName, iModeNum, lpDevMode, flag
     ):
         iModeNum += 1
         resolution = (devMode.dmPelsWidth, devMode.dmPelsHeight)
         deepthDict = modes.setdefault(resolution, {})
         frequencyList = deepthDict.setdefault(devMode.dmBitsPerPel, [])
         frequencyList.append(devMode.dmDisplayFrequency)
     return modes
Beispiel #5
0
 def __init__(self, iDevNum, displayDevice):
     self.iDevNum = iDevNum
     self.deviceName = displayDevice.DeviceName
     self.deviceString = displayDevice.DeviceString
     self.isPrimary = bool(
         displayDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE
     )
     self.devMode = DEVMODE()
     self.devMode.dmSize = sizeof(DEVMODE)
     self.dmp = pointer(self.devMode)
Beispiel #6
0
 def SetDisplayMode(self, size, frequency, bitdepth, flags=0):
     devMode = DEVMODE()
     devMode.dmSize = sizeof(DEVMODE)
     devMode.dmPelsWidth = size[0]
     devMode.dmPelsHeight = size[1]
     devMode.dmBitsPerPel = bitdepth
     devMode.dmDisplayFrequency = frequency
     devMode.dmFields = (
         DM_BITSPERPEL
         |DM_PELSWIDTH
         |DM_PELSHEIGHT
         |DM_DISPLAYFREQUENCY
     )
     ChangeDisplaySettingsEx(self.deviceName, pointer(devMode), 0, flags, 0)
Beispiel #7
0
 def SetDisplayMode(self, size, frequency, bitdepth, flags=0):
     devMode = DEVMODE()
     devMode.dmSize = sizeof(DEVMODE)
     devMode.dmPelsWidth = size[0]
     devMode.dmPelsHeight = size[1]
     devMode.dmBitsPerPel = bitdepth
     devMode.dmDisplayFrequency = frequency
     devMode.dmFields = (
         DM_BITSPERPEL
         |DM_PELSWIDTH
         |DM_PELSHEIGHT
         |DM_DISPLAYFREQUENCY
     )
     ChangeDisplaySettingsEx(self.deviceName, pointer(devMode), 0, flags, 0)
Beispiel #8
0
def SetDisplayModes(*args):
    for (
        deviceName,
        x,
        y,
        width,
        height,
        freq,
        bitdepth,
        isAttached,
        isPrimary,
        displayFlags
    ) in args:
        devMode = DEVMODE()
        devMode.dmSize = sizeof(DEVMODE)
        if isAttached:
            devMode.dmPosition.x = x
            devMode.dmPosition.y = y
            devMode.dmPelsWidth = width
            devMode.dmPelsHeight = height
            devMode.dmBitsPerPel = bitdepth
            devMode.dmDisplayFrequency = freq
            devMode.dmDisplayFlags = displayFlags
        devMode.dmFields = (
            DM_POSITION
            |DM_BITSPERPEL
            |DM_PELSWIDTH
            |DM_PELSHEIGHT
            |DM_DISPLAYFLAGS
            |DM_DISPLAYFREQUENCY
        )
        flags = (CDS_UPDATEREGISTRY | CDS_NORESET)
        if isPrimary:
            flags |= CDS_SET_PRIMARY
        ChangeDisplaySettingsEx(deviceName, pointer(devMode), 0, flags, 0)
    ChangeDisplaySettingsEx(None, None, 0, 0, 0)
Beispiel #9
0
def SetDisplayModes(*args):
    for (
        deviceName,
        x,
        y,
        width,
        height,
        freq,
        bitdepth,
        isAttached,
        isPrimary,
        displayFlags
    ) in args:
        devMode = DEVMODE()
        devMode.dmSize = sizeof(DEVMODE)
        if isAttached:
            devMode.dmPosition.x = x
            devMode.dmPosition.y = y
            devMode.dmPelsWidth = width
            devMode.dmPelsHeight = height
            devMode.dmBitsPerPel = bitdepth
            devMode.dmDisplayFrequency = freq
            devMode.dmDisplayFlags = displayFlags
        devMode.dmFields = (
            DM_POSITION
            |DM_BITSPERPEL
            |DM_PELSWIDTH
            |DM_PELSHEIGHT
            |DM_DISPLAYFLAGS
            |DM_DISPLAYFREQUENCY
        )
        flags = (CDS_UPDATEREGISTRY | CDS_NORESET)
        if isPrimary:
            flags |= CDS_SET_PRIMARY
        ChangeDisplaySettingsEx(deviceName, pointer(devMode), 0, flags, 0)
    ChangeDisplaySettingsEx(None, None, 0, 0, 0)