Saltar al contenido

Activación de la ventana de Python

Hola usuario de nuestra web, tenemos la solución a lo que buscabas, desplázate y la obtendrás a continuación.

Solución:

Puede usar el módulo win32gui para hacer eso. Primero necesita obtener un identificador válido en su ventana. Puedes usar el win32gui.FindWindow si conoce el nombre de la clase de ventana o el título exacto. Si no, puede enumerar las ventanas con el win32gui.EnumWindows y tratar de encontrar el correcto.

Una vez que tenga la manija, puede llamar al win32gui.SetForegroundWindow con el mango Activará la ventana y estará listo para recibir sus pulsaciones de teclas.

Vea un ejemplo a continuación. Espero que ayude

import win32gui
import re


class WindowMgr:
    """Encapsulates some calls to the winapi for window management"""

    def __init__ (self):
        """Constructor"""
        self._handle = None

    def find_window(self, class_name, window_name=None):
        """find a window by its class_name"""
        self._handle = win32gui.FindWindow(class_name, window_name)

    def _window_enum_callback(self, hwnd, wildcard):
        """Pass to win32gui.EnumWindows() to check all the opened windows"""
        if re.match(wildcard, str(win32gui.GetWindowText(hwnd))) is not None:
            self._handle = hwnd

    def find_window_wildcard(self, wildcard):
        """find a window whose title matches the wildcard regex"""
        self._handle = None
        win32gui.EnumWindows(self._window_enum_callback, wildcard)

    def set_foreground(self):
        """put the window in the foreground"""
        win32gui.SetForegroundWindow(self._handle)


w = WindowMgr()
w.find_window_wildcard(".*Hello.*")
w.set_foreground()

Pywinauto y SWAPY probablemente requerirán el menor esfuerzo para establecer el foco de una ventana.

Use SWAPY para generar automáticamente el código Python necesario para recuperar el objeto de la ventana, por ejemplo:

import pywinauto

# SWAPY will record the title and class of the window you want activated
app = pywinauto.application.Application()
t, c = u'WINDOW SWAPY RECORDS', u'CLASS SWAPY RECORDS'
handle = pywinauto.findwindows.find_windows(title=t, class_name=c)[0]
# SWAPY will also get the window
window = app.window_(handle=handle)

# this here is the only line of code you actually write (SWAPY recorded the rest)
window.SetFocus()

Si por casualidad hay otras ventanas frente a la ventana de interés, no hay problema. Este código adicional o this se asegurará de que se muestre antes de ejecutar el código anterior:

# minimize then maximize to bring this window in front of all others
window.Minimize()
window.Maximize()
# now you can set its focus
window.SetFocus()

import ctypes, platform

if platform.system() == 'Windows':
    Active_W = ctypes.windll.user32.GetActiveWindow()
    ctypes.windll.user32.SetWindowPos(Active_W,0,0,0,0,0,0x0002|0x0001)

Aquí vamos. solo necesita almacenar el valor de la ventana activa.

valoraciones y reseñas

Ten en cuenta dar difusión a este escrito si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *