【使用Python编写游戏辅助工具】第四篇:Windows窗口操作

news2025/2/25 8:20:34

image.png

前言

这里是【使用Python编写游戏辅助工具】的第四篇:Windows窗口操作。本文主要介绍使用Python来实现Windows窗口的各种操作。

Windows窗口操作是游戏辅助功能中不可或缺的一部分。

Windows窗口操作指的是与Windows操作系统中的窗口进行交互和控制的操作:

  • 后台挂机: 有些游戏需要前台挂机才会有收益。但是我想做的是后台挂机也有收益,这个就是刚需;
  • 隐藏窗口: 在(学习&上学&上班)使用电脑时候,有时候压力大了想开始游戏放松一下,突然(家长&老师&领导)走了过来,这时候即使是最小化游戏,在任务栏也还能看到游戏的图标。所以非常需要隐藏游戏窗口。

文章脉络⚡⚡

本文的流程和功能如下图所示:

  • 使用Python去操作Windows的窗口;
  • 如将窗口设置到最前台、显示窗口、隐藏窗口、最大化最小化和关闭窗口等。
Windows窗口操作
前台&置顶 窗口
显示窗口
隐藏窗口
其它操作

前台窗口、隐藏窗口和显示窗口是在窗口管理和用户交互方面常用的功能。它们的作用如下:

  1. 前台窗口(Foreground Window):

    • 作用:将指定的窗口设置为最前台,使其处于活动状态并显示在其他窗口之上。

    • 使用场景:当你希望某个窗口在其他窗口之上显示,并且接收用户的输入和操作时,可以将其设置为前台窗口。

  2. 隐藏窗口(Hide Window):

    • 作用:隐藏指定的窗口,使其在屏幕上不可见。

    • 使用场景:当你希望临时隐藏某个窗口,不让其显示在屏幕上,但并不销毁该窗口,以便在需要时重新显示。

  3. 显示窗口(Show Window):

    • 作用:显示或恢复被隐藏的窗口,使其在屏幕上可见。

    • 使用场景:当你需要重新显示之前隐藏的窗口时,可以使用此功能。

这些功能对于窗口管理和用户体验有着重要的作用。通过隐藏窗口,你可以在不删除窗口的情况下暂时将其隐藏起来,避免在屏幕上占用空间。通过设置前台窗口,你可以确保某个窗口在其他窗口之上显示,并接受用户的操作。而显示窗口则允许你重新显示之前被隐藏的窗口,使其再次可见。

摸鱼挂机必备功能!!!

系列文章脉络

系列文章内容大体如下,后续可能会更新新的文章。

  • 点击直达:【使用Python编写游戏辅助工具】第一篇:概述

  • 点击直达:【使用Python编写游戏辅助工具】第二篇:键盘监听的应用

  • 点击直达:【使用Python编写游戏辅助工具】第三篇:鼠标连击器的实现

  • 点击直达:【使用Python编写游戏辅助工具】第四篇:Windows窗口操作

  • 点击直达:【使用Python编写游戏辅助工具】第五篇:打造交互式游戏工具界面:PySide6/PyQT高效构建GUI工具

知识点📖📖

库和模块描述
pywin32提供了与Windows操作系统交互的功能,如操作窗口、注册表等(这里用于窗口操作)

据官网介绍,pywin32是Python for Win32 (pywin32)的扩展,它提供了从 Python 访问许多 Windows API 的途径。

安装依赖

pip install pywin32

安装完成之后,pywin32有多个模块

import win32api  # 窗口和系统函数
import win32gui  # 窗口界面函数
import win32con  # 常量定义
import win32process  # 进程函数

但是在这里,我们只需要使用 win32guiwin32con即可。

使用步骤如下:

  1. 使用 win32gui.FindWindow()查找窗口句柄;
  2. 使用 win32gui.SetForegroundWindow() 设置前台窗口;
  3. 使用 win32gui.ShowWindow() 进行显示和隐藏窗口;
  4. 使用 win32gui.CloseWindow() 进行关闭窗口;
  5. 使用win32gui.ShowWindow 进行最大化和最小化窗口;

这个模块就可以很好的实现本文的主题。

Windows窗口操作✨✨

需要注意的是,系统的学习还请看官方文档,这里只是对pywin32功能的一些介绍,并不够全面。

获取窗口句柄

# -*- coding: utf-8 -*-
# Name:         win_operate.py


import win32gui
import win32con


def get_window_handle(class_name=None, title=None):
    """
    通过类名和标题查找窗口句柄.

    Args:
        class_name(str|None):窗口的类名. 默认为None.
        title(str|None):窗口的标题. 默认为None.

    Returns:
        int: 返回找到的窗口句柄,如果没有找到则返回0.
    """
    return win32gui.FindWindow(class_name, title)

窗口设置前台🎃🎃

def set_top_window(title=None):
    """
    窗口置顶

    Args:
        title(str|None):窗口的标题. 默认为None.

    Returns:
        None
    """
    hwnd = get_window_handle(title=title)
    if hwnd:
        win32gui.SetForegroundWindow(hwnd)


if __name__ == '__main__':
    win_title = '咸鱼之王'
    set_top_window(title=win_title)

运行效果:

显示窗口🎣🎣

显示窗口 结合 设置前台窗口,将窗口展示出来。

def show_window(title=None):
    """
    显示窗口

    Args:
        title(str|None):窗口的标题. 默认为None.

    Returns:
        None
    """
    hwnd = get_window_handle(title=title)
    if hwnd:
        win32gui.ShowWindow(hwnd, win32con.SW_SHOW)


if __name__ == '__main__':
    win_title = '咸鱼之王'
    show_window(title=win_title)
    set_top_window(title=win_title)

运行效果:

隐藏窗口🎶🎶

隐藏窗口 结合 设置前台窗口,将窗口显示出来。达到窗口不显示,但又在运行的状态。

def hide_window(title=None):
    """
    隐藏窗口

    Args:
        title(str|None):窗口的标题. 默认为None.

    Returns:
        None
    """
    hwnd = get_window_handle(title=title)
    if hwnd:
        win32gui.ShowWindow(hwnd, win32con.SW_HIDE)
        

if __name__ == '__main__':
    win_title = '咸鱼之王'
    hide_window(title=win_title)
    set_top_window(title=win_title)
    

运行效果:

关闭窗口🤞🤞

def close_window(title=None):
    """
    关闭窗口

    Args:
        title(str|None):窗口的标题. 默认为None.

    Returns:
        None
    """
    hwnd = get_window_handle(title=title)
    if hwnd:
	    win32gui.CloseWindow(hwnd)


if __name__ == '__main__':
    win_title = '咸鱼之王'
    close_window(title=win_title)

最大化窗口🤿🤿

def maximize_window(title=None):
    """
    窗口最大化

    Args:
        title(str|None):窗口的标题. 默认为None.

    Returns:
        None
    """
    hwnd = get_window_handle(title=title)
    if hwnd:
	    win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
        

if __name__ == '__main__':
    win_title = '咸鱼之王'
    maximize_window(title=win_title)
    

最小化窗口🎉🎉

def minimize_window(class_name=None, title=None):
    """
    窗口最小化

    Args:
        title(str|None):窗口的标题. 默认为None.

    Returns:
        None
    """
    hwnd = get_window_handle(title=title)
    if hwnd:
	    win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)


if __name__ == '__main__':
    win_title = '咸鱼之王'
    minimize_window(title=win_title)

总结🎈🎈

当使用Python编写游戏辅助工具时,Windows窗口操作是一个重要的方面。本文提供了关于Windows窗口操作的详细介绍。

文章首先概述了Windows窗口操作的定义和目的,以及在游戏中可能需要使用的窗口操作。接着,讨论了如何使用Python库进行窗口查找和识别,包括通过窗口标题、类名等特征进行查找。

文章进一步介绍了窗口操作技巧,包括移动、调整大小和最小化窗口,以及获取窗口句柄和属性信息的方法。这些技巧对于自定义窗口行为和用户界面设计非常有用。

总而言之,本文通过详细介绍Windows窗口操作的概念,帮助读者理解和应用Python在游戏辅助工具开发中的窗口操作功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker安装ElasticSearch7.8.0

Docker安装ElasticSearch7.8.0 1:docker可能会拉取不了es,此时可以配置一个很好用的镜像源(daocloud),下载非常快: curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.…

iTerm2 自动连接服务器配置

iTerm2 自动连接服务器配置 创建ssh_conf.sh配置文件 touch ssh_conf.sh编辑配置文件内容 #!/usr/bin/expect -f set user root set host 119.xxx.xxx.xxx set port 22 set password xxxx set timeout 30 spawn ssh -p $port $user$host expect "$user$hosts password:…

测试用例设计方法 —— 场景法详解

场景法是通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果的一种方法。 场景法一般包含基本流和备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景。 场景主要…

玻色量子“天工量子大脑”亮相中关村论坛,大放异彩

2023年5月25日至30日,2023中关村论坛(科博会)在北京盛大召开。中关村论坛(科博会)是面向全球科技创新交流合作的国家级平台行业盛会,由科技部、国家发展改革委、工业和信息化部、国务院国资委、中国科学院、…

【Linux学习笔记】进程概念(上)

1. 冯诺依曼体系结构2. 操作系统的作用3. 进程 1. 冯诺依曼体系结构 如图,这是一个冯诺依曼体系结构简图 其中这里的存储器指的是内存! 用通俗的话来解释这个图,就是数据从输入设备进入,然后进入到存储器,CPU从存储器…

【PWN · heap | UAF】[BJDCTF 2020]YDSneedGirlfriend

一篇裸的、便于学习UAF的题目和笔记 前言 UAF-释放后重用,这一题和wiki上教学的那一题一样,是纯的裸UAF题目 一、题目 二、分析 题目中del函数,在释放申请的堆块后,并没有将置零,存在UAF漏洞。 分析add函数&#xf…

Tailwind CSS vs 现代CSS,Tailwind CSS 会像CSS-in-JS 一样亡?

本文是 关于Tailwind CSS 与 现代 CSS之间比较的文章。文章中作者详细比较了这两种CSS开发方法的优缺点。他指出,Tailwind CSS是一种基于类的CSS框架,提供了快速开发网站的便利性,但可能导致HTML代码的臃肿。另一方面,现代CSS方法…

[双指针] (四) LeetCode 18.四数之和

[双指针] (四) LeetCode 18.四数之和 文章目录 [双指针] (四) LeetCode 18.四数之和题目解析解题思路代码实现总结 18. 四数之和 题目解析 (1) 从一个数组中找一个目标值target (2) target nums[a] nums[b] nums[c] nums[d] 解题思路 和上一道题三数之和一样, 我们把四…

刷到这篇文章的老师,就是老天在帮你

作为一名奋斗在教育战线的老师,是否曾在成绩查询这个环节中倍感头大? 统计是个繁琐又重要的工作,但有了正确的工具,一切都变得无所谓! 什么是成绩查询? 成绩查询,顾名思义,就是学生…

uni-app 应对微信小程序最新隐私协议接口要求的处理方法

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一,问题起因 最新在开发小程序的时候,调用微信小程序来获取用户信息的时候经常报错一个问题 fail api scope is not declared in the privacy agreement,api更具公告…

Linux | 文件系统

目录 前言 一、预备知识 二、文件相关的系统调用 1、C语言的文件操作 2、系统调用接口 (1)open函数 (2)close函数 (3)write函数 (4)read函数 3、代码实操 三、深入理解文…

k8s:endpoint

在 Kubernetes 中,Endpoint 是一种 API 对象,它用于表示集群内某个 Service 的具体网络地址。换句话说,它连接到一组由 Service 选择的 Pod,从而使它们能够提供服务。每个 Endpoint 对象都与相应的 Service 对象具有相同的名称&am…

python判断图片主颜色

一 、 问题:python判断图片主颜色 python判断图片主颜色(HSV) 二 、 项目背景: app选项是否能被点击,判断执行逻辑。做自动化测试的朋友肯定遇到好多次,按钮属性无法判别时,就需要自己将app选…

shell script中的数值运算declare和$((运算式 ))

linux中变量定义默认是字符串类型,如要进行数值运算,需要先声明变量类型,或者通过固定格式来计算 看案例 如果不通过固定格式,直接 echo 55 如图,结果显示的55本身 可以写成 declare -i var#声明变量integrate类型&…

网络架构学习之FCNVMB(基于U-Net架构)

目录 一、U-Net介绍 1.1 网络简单介绍 1.2 网络特点 二、FCNVMB介绍 2.1 文章简介 2.2 网络简单介绍 2.3 代码介绍 2.4 跳跃连接 2.5 训练过程 2.6 FCNVMB与InversionNet的比较 一、U-Net介绍 1.1 网络简单介绍 U-Net是基于全卷积网络下一个语义分割应用于生物医学的深…

PC端视频编辑处理的全方位解决方案

视频已经成为企业传播信息、展示品牌形象的重要工具。然而,制作高质量的视频并非易事,需要专业的技术和设备。这就是美摄科技发挥作用的地方。我们为企业提供一站式的PC端视频编辑处理解决方案,帮助企业轻松制作出专业级别的视频。 美摄科技…

Kubernetes 架构

Kubernetes 架构 Kubernetes 最初源于谷歌内部的 Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes 的目标旨在消除编排物理 / 虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提…

2021~2023年度长垣起重机博览会最佳产品彩页(修订中)

1.河南恒达 比较完善的起重量限制器产品线分类,提供了监控参数一览表。 2.沪源电机 详细的电机参数,这基本上可以作为电机发展的历史资料来搜集。 包含效率,功率因数,堵转电流等其他厂商很少给出的参数,可以做手册用…

【Redis】安装(Linuxwindow)及Redis的常用命令

Redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。 它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复…

2024年天津中德应用技术大学专升本招生专业限制目录

2024年天津中德应用技术大学专升本招生专业限制 专科可允许报考的专业目录范围 机械电子工程: 机电一体化技术、数控技术、数控设备应用与维护、模具设计与制造、精密机械技术、材料工程技术、机械设计与制造、计算机辅助设计与制造、焊接技术与自动化、电气自动化…