Versión: 2.x, 3.x.
Descargas: alwaysontop.zip.
Simple código que utiliza las funciones de la API de Windows FindWindow
(en su versión Unicode, FindWindowW
) y SetWindowPos
para, respectivamente, obtener el número identificador de una ventana específica (determinada a partir del título) y luego enviarla y mantenerla al frente, por más que pierda el foco.
#!/usr/bin/env python # -*- coding: utf-8 -*- # # alwaysontop.py # # Copyright 2014 Recursos Python - www.recursospython.com # from ctypes import c_void_p, windll from platform import python_version_tuple from sys import stdin # Constantes. SWP_NOMOVE = 0x0002 SWP_NOSIZE = 0x0001 def main(): # Compatibilidad entre versiones. py_version = int(python_version_tuple()[0]) prompt = raw_input if py_version == 2 else input # Nombre de la ventana. window_name = "" # Identificador. handle = 0 while not window_name or not handle: window_name = prompt("Nombre de la ventana: ") # Convertir a Unicode en Python 2. if py_version == 2: window_name = window_name.decode(stdin.encoding) handle = windll.user32.FindWindowW(None, window_name) # Enviar ventana al frente. windll.user32.SetWindowPos(handle, c_void_p(-1), 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE) if __name__ == "__main__": main()
A continuación, un código análogo que utiliza el módulo pywin32:
#!/usr/bin/env python # -*- coding: utf-8 -*- # # alwaysontop_pywin32.py # # Copyright 2014 Recursos Python - www.recursospython.com # from platform import python_version_tuple from sys import stdin from win32con import SWP_NOMOVE, SWP_NOSIZE from win32gui import FindWindow, SetWindowPos def main(): py_version = int(python_version_tuple()[0]) prompt = raw_input if py_version == 2 else input window_name = "" handle = 0 while not window_name or not handle: window_name = prompt("Nombre de la ventana: ") if py_version == 2: window_name = window_name.decode(stdin.encoding) handle = FindWindow(None, window_name) SetWindowPos(handle, -1, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE) if __name__ == "__main__": main()
Curso online 👨💻
¡Ya lanzamos el curso oficial de Recursos Python en Udemy!
Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter
en 2024.
Consultoría 💡
Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.