PyWin32是一个Python库,它提供了丰富的接口以便访问Windows操作系统下的各种原生API。这个库为Python开发者在Windows平台上进行开发提供了极大的便利,使得在Python程序中使用Windows功能变得容易。

PyWin32的安装

pip install pywin32

由于pywin32是针对Windows操作系统的API进行封装的,因此它仅适用于Windows环境。

常用接口

获取系统信息

import win32api

# 获取计算机名
computer_name = win32api.GetComputerName()

# 获取操作系统版本
os_version = win32api.GetWindowsVersion()

# 打开进程
handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, pid)  

# 关闭进程句柄 
win32api.CloseHandle(handle)

用户界面

import win32gui

# 创建窗口
hwnd = win32gui.CreateWindow('BUTTON', 'Hello, World!', win32gui.WS_OVERLAPPEDWINDOW, 100, 100, 300, 200, 0, 0, win32gui.GetModuleHandle(None), None)

# 显示窗口
win32gui.ShowWindow(hwnd, win32gui.SW_SHOW)

# 获取窗口标题
title = win32gui.GetWindowText(hwnd)

# 获取当前活动窗口的句柄
hwnd = win32gui.GetForegroundWindow()

# 根据窗口句柄获取窗口位置和大小
left, top, right, bottom = win32gui.GetWindowRect(hwnd)

示例:

根据窗口句柄获取进程名称:

def get_process_name_by_hwnd(hwnd):  
    """根据窗口句柄获取进程名称"""  
    # 获取窗口的线程ID  
    _, pid = win32process.GetWindowThreadProcessId(hwnd)  
      
    # 打开进程  
    try:  
        handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, pid)  
        # 获取进程名称  
        process_name = win32process.GetModuleFileNameEx(handle, None)  
        # 通常我们只对进程的可执行文件名感兴趣,所以我们可以使用os.path.basename来获取它  
        process_name = os.path.basename(process_name)
        # 关闭进程句柄  
        win32api.CloseHandle(handle)
        return process_name
    except Exception as e:
        print(f"无法获取进程名称: {e}")
        return None

根据窗口句柄截图:

def capture_window(hwnd, filename="screenshot.jpg"):
    """捕获指定窗口并保存为JPG文件"""
    left, top, width, height = get_window_rect(hwnd)
    bbox = (left, top, left + width, top + height)
    img = ImageGrab.grab(bbox)
    img.save(filename, "JPEG")
    return bbox

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部