正如David Heffernan提到的那样,您可以使用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]))
Run Code Online (Sandbox Code Playgroud)
工作区大小为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]))
Run Code Online (Sandbox Code Playgroud)
任务栏的高度为40。
首先,我们需要创建一个引用主监视器的句柄。主监视器的左上角始终为0,0,因此我们可以使用:
primary_monitor = MonitorFromPoint((0,0))
Run Code Online (Sandbox Code Playgroud)
我们使用检索有关监视器的信息GetMonitorInfo()
。
monitor_info = GetMonitorInfo(primary_monitor)
# {'Monitor': (0, 0, 1366, 768), 'Work': (0, 0, 1366, 728), 'Flags': 1, 'Device': '\\\\.\\DISPLAY1'}
Run Code Online (Sandbox Code Playgroud)
监视器信息以形式返回dict
。前两个条目将监视器大小和工作区域大小表示为元组(x位置,y位置,高度,宽度)。
work_area = monitor_info.get("Work")
# (0, 0, 1366, 728)
Run Code Online (Sandbox Code Playgroud)
我认为您需要为感兴趣的监视器调用GetMonitorInfo 。然后,您需要从MONITORINFO.rcWork中读取工作区。这将排除为任务栏保留的监视器的任何部分以及实际上任何其他保留区域。
我认为您不需要担心自动隐藏,因为 GetMonitorInfo 应该考虑到这一点。换句话说,当启用自动隐藏时,工作区域将等于监视器区域。
归档时间: |
|
查看次数: |
2191 次 |
最近记录: |