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. 导入必要的模块和库
  2. 获取屏幕的大小
  3. 获取桌面的大小
  4. 测试代码

1. 导入必要的模块和库

首先,我们需要导入tkinter模块,它是Python的标准GUI库,用于创建图形用户界面。我们还需要导入win32apiwin32con模块,它们是Python的Windows扩展库,用于与Windows系统交互。

import tkinter
import win32api
import win32con

2. 获取屏幕的大小

要获取屏幕的大小,我们可以使用win32api模块中的GetSystemMetrics函数。该函数可以返回屏幕的宽度和高度。我们将使用SM_CXSCREENSM_CYSCREEN作为参数,它们分别表示屏幕的宽度和高度。

screen_width = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)
screen_height = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)
 

3. 获取桌面的大小

要获取桌面的大小,我们可以使用tkinter模块中的Tk类和winfo_screenwidthwinfo_screenheight方法。Tk类是Tkinter中的主窗口类,我们可以使用它来获取桌面的宽度和高度。

root = tkinter.Tk()
desktop_width = root.winfo_screenwidth()
desktop_height = root.winfo_screenheight()
root.destroy() 

4. 测试代码

现在,我们可以编写一个简单的测试代码来验证我们的实现是否正确。我们将使用print函数将获取到的屏幕和桌面的大小打印出来。

print("屏幕宽度:", screen_width)
print("屏幕高度:", screen_height)
print("桌面宽度:", desktop_width)
print("桌面高度:", desktop_height)

完成上述步骤后,我们就可以运行代码,并获得屏幕和桌面的大小信息。

5. 示例代码

下面是一个完整的代码示例:

import tkinter
import win32api
import win32con

screen_width = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)
screen_height = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)

root = tkinter.Tk()
desktop_width = root.winfo_screenwidth()
desktop_height = root.winfo_screenheight()
root.destroy()

print("屏幕宽度:", screen_width)
print("屏幕高度:", screen_height)
print("桌面宽度:", desktop_width)
print("桌面高度:", desktop_height)

#可以循环参数打印出来具体的结果
# for num in range(84):
# print( "num=",num,"size=",win32api.GetSystemMetrics(num))
 

以上就是获取电脑桌面和屏幕大小的完整流程。希望本文对你有所帮助!

序列图:

开发者小白开发者小白
请教如何获取电脑桌面和屏幕的大小?首先,需要导入必要的模块和库然后,获取屏幕的大小接着,获取桌面的大小最后,测试代码是否正确完成以上步骤后,就可以获取电脑桌面和屏幕的大小了有其他问题吗?感谢您的帮助!没有其他问题了。

甘特图:

获取电脑桌面和屏幕的大小
2022-01-012022-01-012022-01-012022-01-012022-01-012022-01-012022-01-012022-01-012022-01-02导入必要的模块和库 准备工作获取电脑桌面和屏幕的大小

 

 

出处: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代码,混合编码的方式实现。

具体可参考:将powershell脚本嵌入至bat文件中----修改指定窗口位置和大小

posted on 2024-11-04 16:18  jack_Meng  阅读(44)  评论(0编辑  收藏  举报

导航