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

2021年11月26日 阅读数:7
这篇文章主要向大家介绍利用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))