百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

无需安装 Windows SDK?用 Python 开发 Win32 显示器调节程序

off999 2024-09-20 22:40 44 浏览 0 评论

如今,笔记本电脑通常会有一个 Fn 按键,该按键组合其他键可以通过丰富的快捷功能,如调节屏幕的亮暗。当笔记本外接显示时,外接显示器的屏幕亮暗则无法快捷键调节。虽然部分品牌显示会提供相关的显示器驱动或工具程序,可以通过软件的方法调节显示器,但是有些显示器并没有官方提供的工具软件,只能通过显示器上的按键来调节,非常的麻烦与不便。但这类显示器并不不可以通过软件调节,只要显示器支持 DDC/CI 协议都是可以通过软件调节显示器的。直接下载安装互联网上未知来源的程序通常是具有风险的,如包含病毒和木马程序,因此,有必要使用 Python语言编写一个安全自用的调节软件。


众所周知,Python 一个非常易于使用的编程语言,相比较而言 Win32 编程则要复杂得多。仅仅是 Visual Studio 的安装就要占据近 10GB 的硬盘空间。Python 搭配 VS Code 则更加轻便与快捷。Python 被称为胶水语言的原因就是它是一种用来连接软件组件的程序设计语言。它通过 ctypes 模块可以非常轻松方便的调用动态连接库里的函数,这就为 Python 调用 Win32 API 提供了方便。Windows API 大多存在于 kernel32.dll, user32.dll 等一些列动态连接库里,Python 直接调用 Windows DLL 的函数可以免除 Windows SDK 的安装。而这通常是编译型语言如 C/C++ 必须要安装的文件,否则无法编译。

调用 Win32 API

在 Python 中调用 Win32 API 是非常方便的,Windows 大多数的函数接口都在 ctypes.windll 中。Windows 中关于显示器接口的文档可在微软官方网站上获得。例如获取一个显示器句柄中包含的物理显示器个数的代码如下:

def get_physical_monitors_from_HMONITOR(hmonitor: wintypes.HMONITOR):
    num = wintypes.DWORD()
    windll.Dxva2.GetNumberOfPhysicalMonitorsFromHMONITOR(hmonitor, byref(num))

    class PHYSICAL_MONITOER(Structure):
        _fields_ = [
            ("hPhysicalMonitor", wintypes.HANDLE),
            ("szPhysicalMonitorDescription", wintypes.WCHAR*128)
        ]
    phy_monitors_arr = (PHYSICAL_MONITOER * num.value)()
    windll.Dxva2.GetPhysicalMonitorsFromHMONITOR(hmonitor, num, phy_monitors_arr)
    return list(phy_monitors_arr)

ctypes.wintypes 中包含了 Windows 中的相关类型,如DWORD,HANDLE等。 PHYSICAL_MONITOR 类则定义了一个 C 接口体,它继承了 ctypes 中的 Structure 类。而 phy_monitors_arr 则声明了一个 C 语言数组。最后调用 Dxva2.dll 中的GetPhysicalMonitorsFromHMONITOR 函数就可以获得具体的物理显示器个数了。相关的详细说明可见 ctypes 模块的文档以及微软 Monitor Configuration 文档。

Python界面编程

PyQt 以及 PySide 是用于在 Python 中使用 QT 进行界面编程的模块。QT 是一个功能非常全面且十分成熟的 UI 界面编写框架,在 Python 中也可以十分方便的进行 QT 开发。以下是基于 QT 编写的显示器调节软件工具,使用了自定义界面。


完整代码见:https://github.com/panderan/BrightnessControl

相关推荐

imei怎么下载(imei changer apk)

如果您的steam序列号激活了,可以尝试以下方法下载:1.使用steam自带的下载工具,如“下载工具”,在软件的“下载”选项卡中选择“序列号下载”。2.在下载页面中,选择要下载的游戏,然后点击“下...

电脑系统优化软件哪个好(系统优化软件排行榜)

有必要用,非常好用,WINDOWS优化大师是一个网络上下载率极高的系统维护软件。多年未曾清理过系统和硬盘的电脑,系统内部将产生大量的垃圾文件、临时文件、废旧程序等等win10系统不需要经常更新,关闭...

重装系统后硬盘不见了(重装系统后磁盘不见了)

硬盘不见可能是因为重装系统时未正确安装驱动程序或未对硬件进行正确设置。你可以按以下步骤排查问题:进入BIOS检查硬盘是否被识别,尝试重新连接数据线和电源线,更新或安装适当的硬件驱动程序,或者使用硬件故...

冰封u盘装win7系统教程图解(冰封u盘启动装机教程)

1.查找激活工具:通常来说,Win7冰封系统已经包含了必要的驱动,所以如果你的电脑上并没有出现设备错误,那你就可以正常使用。如果你需要添加任何驱动,请尝试从厂商下载相应的驱动并执行自动安装程序。如果...

ppt软件电脑版推荐(电脑ppt软件下载哪个版好)
  • ppt软件电脑版推荐(电脑ppt软件下载哪个版好)
  • ppt软件电脑版推荐(电脑ppt软件下载哪个版好)
  • ppt软件电脑版推荐(电脑ppt软件下载哪个版好)
  • ppt软件电脑版推荐(电脑ppt软件下载哪个版好)
兄弟打印机怎么连接wifi(兄弟打印机怎么连接wifi手机打印)
  • 兄弟打印机怎么连接wifi(兄弟打印机怎么连接wifi手机打印)
  • 兄弟打印机怎么连接wifi(兄弟打印机怎么连接wifi手机打印)
  • 兄弟打印机怎么连接wifi(兄弟打印机怎么连接wifi手机打印)
  • 兄弟打印机怎么连接wifi(兄弟打印机怎么连接wifi手机打印)
uefi模式下找不到硬盘(uefi引导找不到硬盘)

首先你的安装盘必须是从UEFI启动的,然后它才能安装为UEFI启动。(条件:Fat32文件系统,efi文件夹)其次你MBR+BIOS的系统想换成GPT+EFI的,分区得做一点改动,腾出来100M的空...

win7怎么安装蓝牙驱动程序(win7电脑安装蓝牙驱动教程)

方法如下:  1、再开始里点击控制版面,点击【硬件和声音】找到【添加设备】  2、之后再选择你要添加的蓝牙耳机。  3、系统就会提示正在与蓝牙适配器连接,然后提示添加成功。  4、点击“开始”-“...

怎么装系统win7旗舰版(电脑怎么装win7旗舰版)

1、目前支持64位的Wincc版本有:WinccV7Sp3、WinccV11Sp2、WinccV12。2、Wincc的V11与V12两个版本不能共存,即不能同时安装在同一台电脑上。上述这两...

u盘恢复工具免费版(u盘文件恢复工具免费版)
  • u盘恢复工具免费版(u盘文件恢复工具免费版)
  • u盘恢复工具免费版(u盘文件恢复工具免费版)
  • u盘恢复工具免费版(u盘文件恢复工具免费版)
  • u盘恢复工具免费版(u盘文件恢复工具免费版)
qq特别关心查询入口电脑版(电脑版qq特别关心网站登录)
  • qq特别关心查询入口电脑版(电脑版qq特别关心网站登录)
  • qq特别关心查询入口电脑版(电脑版qq特别关心网站登录)
  • qq特别关心查询入口电脑版(电脑版qq特别关心网站登录)
  • qq特别关心查询入口电脑版(电脑版qq特别关心网站登录)
怎样恢复桌面图标原样(怎样恢复桌面图标原样显示)

桌面图标恢复原样步骤方法如下:1.右键点击图标、并点击‘属性’两字,再点击‘打开文件位置‘2.然后找到文件所在的位置,然后暂时将文件在一旁放着3.然后再去点击‘更换图标’这四个字,找到刚刚打开的文件...

消除u盘写保护(怎么解除u盘写保护)

如果您的U盘启用了写保护功能,可以尝试以下几种方法来解除写保护:1.检查U盘上的物理写保护开关:部分U盘有一个物理的写保护开关,可以在U盘的外壳上找到。请确保开关处于非写保护状态。2.使用CMD命...

microsoft国际版(微软国际版bing)

win10系统自带的edge浏览器不分国内版和国际版。搜索引擎Bing分为国内版和国际版,区别如下一、迎合不同人群的需求。国际版显得更加个性,他迎合了不同人群的需求,在收缩上更加方便化和智能化,后期可...

为什么格式化sd卡后不能用了

SD卡受损后不格式化直接修复的方法:1,当系统发现SD卡受损之后,会提示进行格式化。2,把SD卡插入读卡器,接到电脑USB后,电脑提示格式化,点取消。然后查看一下属性。直接使用属性中的工具-开始检查...

取消回复欢迎 发表评论: