利用python+win32api获取标题对应的窗口句柄id,并且操作为当前活动窗口

Posted brucelong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用python+win32api获取标题对应的窗口句柄id,并且操作为当前活动窗口相关的知识,希望对你有一定的参考价值。

# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2021-06-15 18:08
# @Author : BruceLong
# @FileName: switch_win.py
# @Email   : 18656170559@163.com
# @Software: PyCharm
# @Blog :http://www.cnblogs.com/yunlongaimeng/
import ctypes
import win32gui

import win32con


def get_jb_id(title):
    \'\'\'
    根据标题找句柄
    :param title: 标题
    :return:返回句柄所对应的ID
    \'\'\'
    jh = []
    hwnd_title = dict()

    def get_all_hwnd(hwnd, mouse):
        if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):
            hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})

    win32gui.EnumWindows(get_all_hwnd, 0)
    for h, t in hwnd_title.items():
        if t is not "":
            if title in t:
                jh.append(h)

    if len(jh) == 0:
        print("找不到相应的句柄")
    else:
        return jh


def switch_roles(hwnd):
    \'\'\'
    根据句柄id切换活动窗口
    :param hwnd: 
    :return: 
    \'\'\'
    try:
        ctypes.windll.user32.SwitchToThisWindow(hwnd, True)
        win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
        win32gui.SetForegroundWindow(hwnd)
        msg = [True, \'exec success\', None]
    except Exception as e:
        msg = [False, \'没有找到可操作的对象\', str(e)]
    return msg


jb_id_list = get_jb_id("Studio 3T for MongoDB - TRIAL LICENSE")
jb_id = jb_id_list[0] if jb_id_list else jb_id_list
print(switch_roles(jb_id))

 

以上是关于利用python+win32api获取标题对应的窗口句柄id,并且操作为当前活动窗口的主要内容,如果未能解决你的问题,请参考以下文章

转 python通过win32api轻松获取控件的属性值

Python获取Win7,Win10系统缩放大小

python --获取本机屏幕分辨率

GetExplicitEntriesFromAcl() Win32 API 函数的对应物是啥?

Pywinauto常用02--pywin32(Python调用win api)

Python win32gui 获取窗口中虚拟光标的当前位置