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

举报
frica01 发表于 2023/06/19 14:42:37 2023/06/19
【摘要】 文章首先概述了Windows窗口操作的定义和目的,以及在游戏中可能需要使用的窗口操作。接着,讨论了如何使用Python库进行窗口查找和识别,包括通过窗口标题、类名等特征进行查找。 文章进一步介绍了窗口操作技巧,包括移动、调整大小和最小化窗口,以及获取窗口句柄和属性信息的方法。这些技巧对于自定义窗口行为和用户界面设计非常有用。

image.png

前言

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

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

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

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

文章脉络⚡⚡

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

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

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

  1. 前台窗口(Foreground Window):

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

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

  2. 隐藏窗口(Hide Window):

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

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

  3. 显示窗口(Show Window):

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

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

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

摸鱼挂机必备功能!!!

系列文章脉络

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

知识点📖📖

库和模块 描述
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在游戏辅助工具开发中的窗口操作功能。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。