Python设置显示屏分辨率

工具安装

  • 主要调用win32库实现分辨率获取和读写,需要安装pywin32
  • 示例中是从execl列表中读取需要设置的分辨率,需要安装xlrd
  • 用到的execl分辨率列表如下:
    在这里插入图片描述
pip install pywin32
pip install xlrd

完整脚本

import win32api,win32con,time,xlrd

"""
Author:NoamaNelson
Date:2019-11-26
Discription:Python sets the resolution of Windows computer graphics card and obtains the resolution
"""

book1 = xlrd.open_workbook('常见分辨率.xlsx') # 打开表格
q = book1.sheet_by_index(0) # 使用索引的方式获取sheet1工作簿
i = 0
while(i<=5):
    print("第%d次设置"%i)
    mwidth = str(q.cell_value(i+1,0))	# 获取单元格中的值
    nwidth = mwidth.split(".")[0]	# 获取的值为float,转换成字符串然后进行分割取整
    WidthSet = int(nwidth) # 从表格中获取的分辨率宽的值
    #print(WidthSet)

    mhigth = str(q.cell_value(i+1,1))	# 获取单元格中的值
    nhigth = mhigth.split(".")[0]	# 获取的值为float,转换成字符串然后进行分割取整
    HeightSet = int(nhigth)	# 从表格中获取的分辨率宽的值
    #print(HeightSet)
    
    ResoLutionSet = win32api.EnumDisplaySettings(None, 0) # 调用win32api接口,获取显示设备信息

    ResoLutionSet.PelsHeight = HeightSet # 设置分辨率高
    ResoLutionSet.PelsWidth = WidthSet # 设置分辨率宽
    print("设置的分辨率宽: %d, 设置的分辨率高: %d, 即设置的分辨率为:%d x %d" % (WidthSet, HeightSet, WidthSet, HeightSet))

    ResoLutionSet.BitsPerPel = 32 # 显示设备的颜色分辨率
    ResoLutionSet.DisplayFixedOutput = 2 # 设置分辨率后拉伸画面,否则切换到小分辨率时,屏幕只在中间一小块

    if (win32api.ChangeDisplaySettings(ResoLutionSet, 0)) == 0: # DISP_CHANGE_SUCCESSFUL
        win32api.ChangeDisplaySettings(ResoLutionSet, 0) # 设置生效
    else:
        win32api.ChangeDisplaySettings(None, 0) # 恢复默认

    screenNum = win32api.GetSystemMetrics(win32con.SM_CMONITORS)
    print("显示设备的总数量为: %d" % screenNum)

    aScreenWidth = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
    aScreenHeight = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
    print("当前屏幕总的分辨率为:%d × %d " % (aScreenWidth, aScreenHeight))

    WidthGet = win32api.GetSystemMetrics(win32con.SM_CXSCREEN) # 获得屏幕分辨率X轴
    HeightGet = win32api.GetSystemMetrics(win32con.SM_CYSCREEN) # 获得屏幕分辨率Y轴
    print ("获取的分辨率宽: %d, 获取的分辨率高: %d, 即获取的分辨率为:%d x %d" % (WidthGet, HeightGet, WidthGet, HeightGet))
    time.sleep(3)
   
    i += 1

输出的结果

存在的问题

目前使用这种方式,只能设置显卡列表支持的分辨率,不支持自定义分辨率。不知道有什么更好的方式,有知道的大牛给指导下。

参考资料

微软官方资料

其他博客说明

本文转载于网络 如有侵权请联系删除

相关文章

  • 再搞下去,辛苦挣的钱迟早被吃干抹净!

    今天跟大家说个身边事,希望所有人都能认真看完并重视起来。1艰难的选择周末我参加了一场聚餐,跟几个许久未见的朋友们叙叙旧聊聊近况。 刚开始大家还是像以前一样有说有笑,插科打诨,调侃自己“自从做了程序员,每天不是在加班就是在加班的路上。”突然有个朋友提到老许,大家都瞬间沉默了。老许是和我们很要好的一个朋友,之前带领着一个小技术团队,平时工作强度大压力也大,熬夜加班是常事,再加上不注意饮食,泡面饼干之类的乱吃,后来查到胃癌晚期,31岁就去世了。还有年迈父母未能尽孝,房贷压力陡然落在收入不高的妻子身上,压得喘不过气来。面对身边好友一下子就没了的现实,到现在仍然难以置信……继续聊到父母催婚催娃的话题,开始大家都装作不介意,说自己年轻,没必要着急。可当聊到父母的身体时,大家的语气马上就弱了下来。自己仗着年轻可以多撑几年,而父母呢?五六十岁的年龄,身体也在变差,又有多少时间由着你的性子来?曾经看过有个采访《如果有一天,你生了一场大病》,里面问到几位父母:如果你的孩子生病了,治疗费用超过多少你会放弃?父母们的回答让人感慨万分:父母永远不会放弃孩子的。可反之,如果是父母自己生病了呢?他们会给自己治病花钱

  • 基于java的贪吃蛇游戏的设计与实现(贪吃蛇安卓游戏源码)

    大家好,又见面了,我是你们的朋友全栈君。一.前言某日,看见隔壁家的小朋友在玩一款网络爆款贪吃蛇游戏,感觉很好玩。自己刚好正在学习JAVA编程,也想实现一个类似功能的游戏Demo练手,在网上查看了不少源码案例,全都是很古老的方块式贪吃蛇游戏案例,没有想要的实现,因此自己动手实现一个JAVA版的贪吃蛇游戏。我在这个Dome完成之后重写了这个游戏的Android版,并重新更名为《蛇王传说》。也欢迎大家下载试玩。游戏下载地址:蒲公英–用户登录我的另一篇博客有Androd版本的游戏介绍:蛇王传说1.0Android版发布_hawkol的专栏-CSDN博客https://blog.csdn.net/hawkol/article/details/90608813二、实现效果1.启动界面蛇头会左右摆动,动态效果2、游戏主界面地图上有不同的食物,用键盘控制蛇在地图上行走,每吃掉一个食物,蛇会自动生长一节三、按键功能说明左右键蛇转向,上键蛇加速行走。四、美工准备因自己不会美工,很多图都是从网上找的,然后用photoshop抠图,按自己的设计思路,做成以下样式。做片做的比较丑,就不放原图了。1、images

  • 优思学院|六西格玛战略管理的三步骤

    一、企业进行战略管理的理论工具二十世纪六十年代兴起企业战略管理,以美国为主产生了许多企业管理战略理论,根据我国企业的实际情况,可以选择下面四种战略管理理论作为工具,来指导企业战略管理。1、战略分析法。如著名的安索夫的产品市场矩阵、波土顿咨询公司的BCG矩阵、通用电气的GE九方图、拉依斯的业界地位竞争理论、SWOT分析、PEST分析等。它们共同特点是通过对企业所处的内外部环境的综合分析来为企业制定其战略提供依据。这类分析方法称为战略分析法。以安德鲁斯和安索夫为代表人物的经典战略管理理论是建立在对企业内部条件和外部环境系统分析的基础上的。它分析了企业组织的优势、劣势和环境给企业所提供的机会、威胁(即SWOT分析法),并在此基础上确定企业如何制定战略。经典战略管理理论为企业战略的制定提供了一整套基本的思路和程序,特别是SWOT分析法的运用充分体现了组织内外部关系对战略形成的重要性。2、竞争通用战略。波特在《竞争优势》一书中,运用产业组织理论中的产业分析方法,提出了五种竞争力量模型。他认为,特定产业的竞争性质由五种力量决定:现有的竞争者,潜在的竞争者,替代产品的威胁,供应商的议价力量,购买者的

  • AngularJS 模块

    模块定义了一个应用程序。模块是应用程序中不同部分的容器。模块是应用控制器的容器。控制器通常属于一个模块。创建模块你可以通过AngularJS的angular.module函数来创建模块:<divng-app="myApp">...</div> <script> varapp=angular.module("myApp",[]); </script>复制myApp"参数对应执行应用的HTML元素。现在你可以在AngularJS应用中添加控制器,指令,过滤器等。添加控制器你可以使用ng-controller指令来添加应用的控制器:AngularJS实例<divng-app="myApp"ng-controller="myCtrl"> {{firstName+""+lastName}} </div> <script> varapp=angular.module("myApp&quo

  • hadoop-3.2.0------>入门十一 完全分布式配置

    集群部署规划:由于ResourceManager和NameNode还有SecondaryNameNode比较消耗资源,顾三个配置分别配置到不同的主机上hadoop01hadoop02hadoop03HDFSNameNodeDataNodeDataNodeSecondaryNameNodeDataNodeYARNNodeManagerResourceManagerNodeManagerNodeManager配置集群:一、hadoop011、核心配置文件:vietc/hadoop/core-site.xml<!--指定hdfs中NameNode的地址--> <!--vaule中的ip为本机ip--> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.44.128:9000</value> </property> <!--指定hadoop运行时产生的文件存储目录--> <property> <

  • 95 FPS!超快速3D目标检测网络开源了!SFA3D:基于LiDAR的实时、准确的3D目标检测模型

    前言Amusi发现了一个超快速3D目标检测网络!SFA3D:基于LiDAR的实时、准确的3D目标检测模型,在GTX1080Ti上速度高达95FPS!代码现已开源!主要特性:1.快速训练和推理;2.Anchor-free的方法;3.无NMS;4.支持分布式数据并行训练演示Demo详见视频项目链接:https://github.com/maudzung/SFA3D点击下面该视频,皆可查看演示DemoSuperFastandAccurate3DObjectDetectionbasedon3DLiDARPointCloudsFeaturesSuperfastandaccurate3DobjectdetectionbasedonLiDARFasttraining,fastinferenceAnAnchor-freeapproachNoNon-Max-SuppressionSupportdistributeddataparalleltrainingReleasepre-trainedmodelsThetechnicaldetailsaredescribedhereUpdate2020.09.06:

  • JMeter实战(三) 界面使用

    JMeter有2种运行方式,一种是CLI,一种是GUI,本篇文章就来介绍一下后者,图形用户界面,因为后续文章大部分都是基于GUI的。本文演示的是英文版,想用中文的同学可以在菜单栏点击ChooseLanguage切换哦:启动JMeter(5.3版本)后,会看到这样的界面,共3个区域:区域1是目录树,区域2是元件编辑区,区域3是工具栏,界面左上角是菜单栏。区域1目录树目录树,是一个树状结构的目录,根节点只有1个,叫做测试计划。每1个测试计划就是1个.jmx测试脚本。在根节点测试计划下,可以添加线程组、配置元素、监听器、定时器、前置处理器、后置处理器、断言、TestFragment等:在测试计划下,必须添加线程组。因为JMeter就是用线程来模拟用户的。添加了线程组以后,在线程组下可以添加取样器、逻辑控制器、前置处理器、后置处理器、断言、定时器、TestFragment、配置元素、监听器:取样器和逻辑控制器在测试计划中不能添加,只能在线程组中添加。接着就可以添加其他元件。JMeter在运行时,会从上往下依次遍历元件执行。区域2编辑元件编辑区是用来设置元件的。当在左侧目录树选中某个元件后,右侧

  • 贪心策略 || 0445 分发饼干

    No.1题目No.2分析因为饥饿度最小的孩子最容易吃饱,所以我们先考虑这个孩子。为了尽量使得剩下的饼干可以满足饥饿度更大的孩子,所以我们应该把大于等于这个孩子饥饿度的、且大小最小的饼干给这个孩子。满足了这个孩子之后,我们采取同样的策略,考虑剩下孩子里饥饿度最小的孩子,直到没有满足条件的饼干存在。简而言之,这里的贪心策略是,给剩余孩子里最小饥饿度的孩子分配最小的能饱腹的饼干。No.3代码classSolution{ public: intfindContentChildren(vector<int>&children,vector<int>&cookies) { sort(children.begin(),children.end()); sort(cookies.begin(),cookies.end()); intchild=0,cookie=0; while(child<children.size()&&cookie<cookies.size()) { if(children[child]<=cookies[

  • 全网最透彻HTTPS(面试常问)

    每篇文章都希望你能收获到东西,这篇将带你深入HTTPS加解密原理,希望看完能够有这些收获: 明白HTTPS到底解决了什么问题理解对称加密与非对称加密的原理和使用场景明白CA机构和根证书到底起了什么作用WhyHTTPS近几年来,各大公司都在大力推进HTTPS的建设。GoogleChrome将非HTTPS的网站标注为「不安全」,苹果要求APP中需要使用HTTPS进行通信,微信小程序也要求使用HTTPS协议。那么,我们为什么非要做这么一件事呢?我们先来看看HTTP。HTTP(HypertextTransferProtocol)超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议,可以说HTTP是当代互联网通信的基础。但是,HTTP有着一个致命的缺陷,那就是内容是明文传输的,没有经过任何加密,而这些明文数据会经过WiFi、路由器、运营商、机房等多个物理设备节点,如果在这中间任意一个节点被监听,传输的内容就会完全暴露,,这一攻击手法叫做MITM(ManInTheMiddle)中间人攻击。举个例子,稍微有点长,但这个例子透露出了怪怪我对安全如此痴迷的原因?~~可以拿小时候上课传纸条

  • tf.dtypes

    目录一、概述1、类2、函数3、别的成员二、函数和类详解1、tf.dtypes.as_dtype2、tf.dtypes.cast3、tf.dtypes.complex4、tf.dtypes.DType1、__init__2、__eq__3、__ne__4、is_compatible_with5、tf.dtypes.saturate_cast一、概述tf.dtypes的公共API名称空间。1、类classDType:表示张量中元素的类型。2、函数as_dtype(...):将给定的类型值转换为DType。cast(...):将张量投射到一个新的类型上。complex(...):将两个实数转换为复数。saturate_cast(...):将值安全饱和转换为dtype。3、别的成员QUANTIZED_DTYPESbfloat16boolcomplex128complex64doublefloat16float32float64halfint16int32int64int8qint16qint32qint8quint16quint8resourcestringuint16uint32uint64

  • 腾讯云智能推荐平台参数类型调用方式

    目前腾讯云API3.0输入参数和输出参数支持如下几种数据格式: String:字符串。 Integer:整型,上限为无符号64位整数。SDK3.0不同编程语言支持的类型有所差异,建议以所使用编程语言的最大整型定义,例如Golang的uint64。 Boolean:布尔型。 Float:浮点型。 Double:双精度浮点型。 Date:字符串,日期格式。例如:2022-01-01。 Timestamp:字符串,时间格式。例如:2022-01-0100:00:00。 TimestampISO8601:ISO8601是由国际标准化组织(InternationalOrganizationforStandardization,ISO)发布的关于日期和时间格式的国际标准,对应国标《GB/T7408-2005数据元和交换格式信息交换日期和时间表示法》。建议以所使用编程语言的标准库进行格式解析。例如:2022-01-01T00:00:00+08:00。 Binary:二进制内容,需要以特定协议请求和解析。

  • 小程序相关测试点

    下载工具 微信官方文档--小程序--下载 导入项目至工具 拉取代码--权限 导入项目  版本管理--配置远程仓库 设置--通用--配置名称/位置/用户信息 设置--网络认真--配置认证方式 设置--远程--配置远程仓库 然后就可以进行相关页面操作了,例如拉取代码查看提交记录吧啦吧 终端打开--可以直接进行命令操作 其它 配置代理 设置--代理设置--配置IP和端口号 多账号调试 工具--多账号调试--添加多个账号--可以开多个窗口同时进行测试 适配/模拟弱网 模拟器上方横栏中,参照chrome开发者工具 调试器 Appdata--可以实时查看页面信息值 Sensor--可以模拟定位和重力等 其他的功能,参照chrome开发者工具 通过二维码编译 满足扫码功能 真机调试 生成类似于体验版的二维码,可以真机调试,但必须在同一局域网中,有限制 真机--开发版 更多--打开性能监控 更多--打开调试 测试 注意点 微信授权 手势操作 弱网测试 性能可多关注Android 涉及权限要注意分享功能 页面限制10个,超过打不开

  • [转载]常用 SQL Server 规范集锦

    转载者注:据说是某公司(携程)内部规范.   常见的字段类型选择   1.字符类型建议采用varchar/nvarchar数据类型  2.金额货币建议采用money数据类型  3.科学计数建议采用numeric数据类型  4.自增长标识建议采用bigint数据类型 (数据量一大,用int类型就装不下,那以后改造就麻烦了)  5.时间类型建议采用为datetime数据类型  6.禁止使用text、ntext、image老的数据类型  7.禁止使用xml数据类型、varchar(max)、nvarchar(max)  约束与索引   每张表必须有主键 每张表必须有主键,用于强制实体完整性 单表只能有一个主键(不允许为空及重复数据) 尽量使用单字段主键   不允许使用外键 外键增加了表结构变更及数据迁移的复杂性 外键对插入,更新的性能有影响,需要检查主外键约束 数据完整性由程序控制   NULL属性   新加的表,所有字段禁止NULL   (新表为什么不允许NULL?   允许NULL值,会增加应用程序的复杂性。你必须得增加特定的逻辑代码,以防止

  • IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架

    每个Android程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换取编程速度。擅长利用轮子的程序员已经遥遥领先,不擅长利用轮子的程序员总是嫌前人发明的轮子不够圆,自己造个方轮子上路后才发现落后了。 作者:玖哥来源:51CTO|2017-10-1916:06  移动端  收藏   分享   【51CTO.com原创稿件】每个Android程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换取编程速度。擅长利用轮子的程序员已经遥遥领先,不擅长利用轮子的程序员总是嫌前人发明的轮子不够圆,自己造个方轮子上路后才发现落后了。 技术选型的考量点 来自不同行业、面向不同用户的App对功能特性、各方面性能的要求都是不同的,选择开源框架和类库不能掉以轻心,我们在选择开源框架之前务必要选择几个

  • 多线程

    。。。。。。。

  • 物联网云组态

    卓岚物联网云组态能够让用户自行设计所需要的监控画面,配合卓岚云进行显示、配合卓岚网关进行数据采集。类似于传统的组态软件,可以通过拖拽图标和绑定JSON关键词来设计组态画面,可以设计原油、电力、水文、锅炉控制等画面。可以提供动态的画面,在相应的数据采集点用数值或者图形表示数据大小。同时提供按钮可以在组态界面中对设备进行控制。 P2P是(PeertoPeer)的缩写,在计算机网络通信中P2P是相对于服务器/客户端模式而言的,通常的服务器/客户端模式下有一台强大的服务器接受大量的客户端的连接。当客户端之间需要通信的时候需要经由服务器转发。这种模式当客户端规模扩展到一定程度时对于服务器的CPU处理能力、带宽都是很大的考验。P2P技术可以让客户端之间直接通信,实现所谓的端到端(P2P)直接通信,此时中心服务器的负荷明显降低。 使用时,登录卓岚云,将卓岚设备添加进卓岚云,然后进入设备管理→组态模板→编辑组态。1.画面设计:拖拽组态组件,自定义自己想要的样式,然后拖动“数据位”组件绑定设备的点位(采集点),选中后点击绑定数据点。2.下发按钮:拖动“开关”组件,然后选择设备,再键入开启与关闭指令,点

  • 手写Promise1

    Promise就是一个类,在执行这个类的时候,需要传递一个执行器进去,执行器会立即执行。 newPromise(()=>{ })复制 这个回调函数接收两个参数:resolve和reject,这两个函数参数是用来改变状态的: resolve: fulfilled reject: rejected Promise 中有三种状态,分别为:成功(fulfilled),失败(rejected)和等待(pending) pending -> fulfilled pending -> rejected constPENDING='pending';//等待 constFULFILLED='fulfilled';//成功 constREJECTED='rejected';//失败 classMyPromise{ constructor(executor){ executor(this.resolve,this.reject)//立即执行的执行器 } //promsie状态默认为等待 stat

  • 16个最棒的WordPress婚纱摄影网站主题

    今天我们整理了16个最棒的WordPress婚纱摄影网站主题,希望大家喜欢。 原文地址:http://thetop16.com/top-wordpress-wedding-themes-239.html 1. MARRIAGE–RESPONSIVEWEDDINGWORDPRESSTHEME “Marriage”isoursecondweddingrelatedthemeafter“OurWeddingpage”.Wehavedecidedtocreateforthisonearesponsivelayouttomakeitlookbetteronalldevicesincludingmobiles.Thedesignisaminimalonewithnicesimplecolorsandcustomwebfontstomatchtheweddingevent. 2. GEEKLOVE–ARESPONSIVEWORDPRESSWEDDINGTHEME GeekLoveisabeautiful,clean,minimalandresponsiveWordPresst

  • Matlab 大一上测试前的画图练习

    1p38示例22 x=0:pi/100:2*pi; y1=2*exp(-0.5*x).*sin(2*pi*x); y2=2*exp(-0.5*x); y3=-2*exp(-0.5*x); plot(x,y1,'m-',x,y2,'m--',x,y3,'m--'); axis([0,2*pi,-2,2]); gridon; xlabel('x轴'); ylabel('y轴'); title('函数曲线'); text(3,0.5,'\leftarrowy2=2*exp(-0.5*x)');复制   2,p39示例23 t=0:pi/20:2*pi; [x,y,z]=cylinder(2+sin(t),100); surf(x,y,z); gridoff; axisoff; shadinginterp; colormap(hot); light('Posi',[2-10]); light('Posi',[-4,-1,0]);%设置光源 lightingphong; materialmetal;%设置面的反射属性复制    3,z=x^2+y^2

  • 小程序 wx.showToast 延时跳转

    wx.showToast({ title:'成功', icon:'success', duration:2000, success:function(){ console.log('haha'); setTimeout(function(){ //要延时执行的代码 wx.switchTab({ url:'../user/user' }) },2000)//延迟时间 } })复制  

  • hdu 2188 巴什博弈

    ProblemDescription 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人员,以及进行心理疏导的心理学专家。根据要求,我校也有一个奔赴灾区救灾的名额,由于广大师生报名踊跃,学校不得不进行选拔来决定最后的人选。经过多轮的考核,形势逐渐明朗,最后的名额将在“林队”和“徐队”之间产生。但是很巧合,2个人的简历几乎一模一样,这让主持选拔的8600很是为难。无奈,他决定通过捐款来决定两人谁能入选。选拔规则如下:1、最初的捐款箱是空的;2、两人轮流捐款,每次捐款额必须为正整数,并且每人每次捐款最多不超过m元(1<=m<=10)。3、最先使得总捐款额达到或者超过n元(0<n<10000)的一方为胜者,则其可以亲赴灾区服务。我们知道,两人都很想入选志愿者名单,并且都是非常聪明的人,假设林队先捐,请你判断谁能入选最后的名单?   Input 输入数据首先包含一个正整数C,表示包含C组测试用例,然后是C行数据,每行包含两个正整数n,m,n和m的含义参见上面提到的规则。 &nb

相关推荐

推荐阅读