Python获取屏幕分辨率,工作区间,任务栏高度
1、使用win32api创建一个监视器窗口,基于坐标0,0
from win32api import GetMonitorInfo from win32api import MonitorFromPoint if __name__ == '__main__': monitor_info = GetMonitorInfo(MonitorFromPoint((0, 0))) print('monitor info:{}'.format(monitor_info)) # 监视器信息 monitor = monitor_info.get('Monitor') # 屏幕分辨率 print('屏幕分辨率:{}'.format(monitor)) work = monitor_info.get('Work') # 工作区间 print('工作区间:{}'.format(work)) print('任务栏高度:{}'.format(monitor[3] - work[3])) # 任务栏高度
元组表示(坐标x位置,坐标y位置,宽度,高度)
2024-11-04 15:47:51【出处】:https://www.cnblogs.com/rainbow-tan/p/14754290.html
=======================================================================================
Python获取电脑屏幕的大小
作为一名经验丰富的开发者,我将教你如何在Python中获取电脑桌面和屏幕的大小。本文将分为以下几个步骤:
- 导入必要的模块和库
- 获取屏幕的大小
- 获取桌面的大小
- 测试代码
1. 导入必要的模块和库
首先,我们需要导入tkinter
模块,它是Python的标准GUI库,用于创建图形用户界面。我们还需要导入win32api
和win32con
模块,它们是Python的Windows扩展库,用于与Windows系统交互。
2. 获取屏幕的大小
要获取屏幕的大小,我们可以使用win32api
模块中的GetSystemMetrics
函数。该函数可以返回屏幕的宽度和高度。我们将使用SM_CXSCREEN
和SM_CYSCREEN
作为参数,它们分别表示屏幕的宽度和高度。
3. 获取桌面的大小
要获取桌面的大小,我们可以使用tkinter
模块中的Tk
类和winfo_screenwidth
、winfo_screenheight
方法。Tk
类是Tkinter中的主窗口类,我们可以使用它来获取桌面的宽度和高度。
4. 测试代码
现在,我们可以编写一个简单的测试代码来验证我们的实现是否正确。我们将使用print
函数将获取到的屏幕和桌面的大小打印出来。
完成上述步骤后,我们就可以运行代码,并获得屏幕和桌面的大小信息。
5. 示例代码
下面是一个完整的代码示例:
以上就是获取电脑桌面和屏幕大小的完整流程。希望本文对你有所帮助!
序列图:
甘特图:
出处:https://blog.51cto.com/u_16213431/8951314
==============================================================================
个人使用
前面使用C#做了一个大概相同的功能,根据上面的代码,我自己做了一个应用。
需求:每次打开虚拟机的窗口大小不是我想要的大小,随说可以使用鼠标拖动窗口大小,但无法准确窗口位置和大小,所以想使用程序重设窗口位置和大小。以下是临时解决方案代码:
#!/bin/env python # -*- coding:utf-8 -*- import win32gui import win32con import win32api def reSizeWindow(winW,winH,winTitle): print("---------------------") # 获取窗口句柄 # wHandle = win32gui.FindWindow("#32770", None) wHandle = win32gui.FindWindow(None, winTitle) print("Handle_window=",wHandle) # return # 设置记事本窗口的位置和大小 if wHandle>0: print('winW={}'.format(winW), ',winH={}'.format(winH)) # 参数分别为:窗口句柄,移动窗口的标志,位置左上角的坐标(x, y),窗口的宽度和高度(width, height) # win32gui.MoveWindow(hwnd, x, y, width, height, repaint) # hwnd,x,y,w,h,bRepaint win32gui.SetWindowPos(wHandle, None, 0, 0, winW, winH, win32con.SWP_SHOWWINDOW) # 如果需要最大化记事本窗口,可以使用以下代码 # win32gui.ShowWindow(wHandle, win32con.SW_MAXIMIZE) if __name__ == '__main__': monitor_info = win32api.GetMonitorInfo(win32api.MonitorFromPoint((0, 0))) print('monitor info:{}'.format(monitor_info)) # 监视器信息 monitor = monitor_info.get('Monitor') # 屏幕分辨率 print('屏幕分辨率:{}'.format(monitor)) work = monitor_info.get('Work') # 工作区间 print('工作区间:{}'.format(work)) w=work[2] h=work[3] print('宽度:{} ,高度:{}',w,h) print('任务栏高度:{}'.format(monitor[3] - work[3])) # 任务栏高度 screen_width = win32api.GetSystemMetrics(win32con.SM_CXFULLSCREEN) screen_height = win32api.GetSystemMetrics(win32con.SM_CYFULLSCREEN) print("屏幕宽度:", screen_width) print("屏幕高度:", screen_height) # for num in range(84): # print( "num=",num,"size=",win32api.GetSystemMetrics(num)) hwnd = win32gui.GetDesktopWindow() rect = win32gui.GetWindowRect(hwnd) print("桌面宽度和高度:", rect) class_name = win32gui.GetClassName(hwnd) print("class_name=",class_name) # 获取系统配置(SM_xxx 常量参见官方文档) print(win32api.GetSystemMetrics(win32con.SM_CMONITORS)) print("获取多显示器列表") print(win32api.EnumDisplayMonitors(None, None)) wTitle='无标题 - 记事本' wTitle='任务管理器' wTitle='FC-JC' reSizeWindow(w+5,h+5,wTitle)
有的部分机器,没有python环境,还无法使用。
所以考虑后使用powershell也可以实现相同的功能,但powershell不如bat的方式运行方便,看看能否考虑在bat中使用powershell代码,混合编码的方式实现。
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/18525556
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!