As 大卫·赫弗南提到, 您可以使用GetMonitorInfo with pywin32检索显示器尺寸。特别是,工作区域将不包括任务栏的大小。
要获取工作区域大小(桌面减去任务栏):
from win32api import GetMonitorInfo, MonitorFromPoint
monitor_info = GetMonitorInfo(MonitorFromPoint((0,0)))
work_area = monitor_info.get("Work")
print("The work area size is {}x{}.".format(work_area[2], work_area[3]))
工作区域大小为 1366x728。
获取任务栏高度:
from win32api import GetMonitorInfo, MonitorFromPoint
monitor_info = GetMonitorInfo(MonitorFromPoint((0,0)))
monitor_area = monitor_info.get("Monitor")
work_area = monitor_info.get("Work")
print("The taskbar height is {}.".format(monitor_area[3]-work_area[3]))
任务栏高度为 40。
解释
首先,我们需要创建一个引用主监视器的句柄。主显示器左上角始终位于 0,0,所以我们可以使用:
primary_monitor = MonitorFromPoint((0,0))
我们检索有关显示器的信息GetMonitorInfo()
.
monitor_info = GetMonitorInfo(primary_monitor)
# {'Monitor': (0, 0, 1366, 768), 'Work': (0, 0, 1366, 728), 'Flags': 1, 'Device': '\\\\.\\DISPLAY1'}
监视器信息返回为dict
。前两个条目将监视器大小和工作区域大小表示为元组(x 位置、y 位置、高度、宽度)。
work_area = monitor_info.get("Work")
# (0, 0, 1366, 728)