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.