Estado ventanas

4 views
Skip to first unread message

Rafael Gómez

unread,
Mar 21, 2026, 7:29:57 AM (10 days ago) Mar 21
to nvd...@googlegroups.com
Hola:

  Necesitaba que NVDA me dijera si la ventana activa estaba maximizada.

  He revisado las configuraciones de NVDA y no he encontrado nada que
me diera esa información. Si hay forma de que lo verbalice no sé como se
hace.

  Lo ideal es que se pudiera configurar a voluntad que al pulsar
NVDA+t, después de decir la información de la barra de la ventana,
también dijera o no el estado de la ventana.

  El caso es que he optado, hasta saber si se puede o no, hacerle un
pequeño complemento.

  Pero como no sé casi nada de python ni de hacer complementos, se lo
he pedido a ChatGPT.

  Soy consciente que no hay que usar a la ligera código de GTP que no
se entiende, pero bueno, es lo que tiene cacharrear.

  La primera idea era que me pitase si la ventana que cambiaba o abría
no estaba maximizada,pero GPT me daba un código demasiado largo.
Deducía, no sé si erróneamente, que el código solo debería de tener una
condicional y una ejecución de tono, pero el código hacía muchas cosas.

  Pero ese código, aunque no daba errores en el registro, pitaba por
todo, incluso por abrir menús.

  Así que GPT me dio un código más largo todavía. Y en este caso casi
funcionaba bien. O sea, que a veces pitaba y otras veces no,
indistintamente si la ventana estaba maximizada o no.

  Como tampoco me servía, le pedí entonces un código que me diera la
información a voluntad, o sea, pulsando una combinación de teclas que
solo verbalizara maximizada o no.

  Y me dio un código igualmente demasiado largo.

 al pedirle un código simplificado me dio el código que os voy a pegar
a continuación, que sí funciona bien, pero me gustaría que alguien me
dijera si es correcto o hace algo innecesario que pueda perjudicar algo
del comportamiento de NVDA.

import globalPluginHandler
import ui
import ctypes
GA_ROOT = 2
user32 = ctypes.windll.user32
class GlobalPlugin(globalPluginHandler.GlobalPlugin):
    def script_estadoVentana(self, gesture):
        try:
            import api
            hwnd = api.getFocusObject().windowHandle
            # Subir a ventana principal
            hwnd = user32.GetAncestor(hwnd, GA_ROOT)
            if user32.IsZoomed(hwnd):
                ui.message("Maximizada")
            else:
                ui.message("Restaurada")
        except:
            ui.message("No se pudo comprobar")
    __gestures = {
        "kb:NVDA+shift+w": "estadoVentana",
    }

Javi Domínguez

unread,
Mar 22, 2026, 7:26:54 PM (8 days ago) Mar 22
to nvd...@googlegroups.com
Hola.

Bien, supongo que funciona. Se podría abreviar incluso más pero está bien. No rompe nada. Simplemente obtiene el identificador (hwnd) de la ventana principal y lo usa para hacer una llamada a la API de Windows con user32.IsZoomed(hwnd) que comprueba el estado de una ventana. Si en lugar de en un script metes ese código en un evento foreground, se ejecutará cada vez que enfoques una ventana.

Cuando le pidas código a la IA dile que te lo dé con comentarios explicando cada paso. Si tienes dudas, copia la línea o el bloque y pregúntale qué hace exactamente.

Saludos

Enviado desde mi iPhone

> El 21 mar 2026, a las 12:29, Rafael Gómez <rafael.gome...@gmail.com> escribió:
>
> Hola:
> --
> Visita la web oficial de la comunidad de NVDA en español para acceder a recursos y descargas que desplegarán todo el potencial de tu lector de pantalla:
> https://nvda.es
> Visita la tienda de la web oficial de la comunidad para adquirir algunos productos, como materiales de formación o sintetizadores de voz, que mejorarán tu experiencia con NVDA: https://nvda.es/tienda/
> Consulta las normas de esta lista siempre que quieras en la siguiente dirección:
> https://nvda.es/documentacion/normas-de-convivencia-y-buen-comportamiento/normas-de-la-lista-de-correo-de-la-comunidad-de-nvda-en-espanol/
> --- Has recibido este mensaje porque estás suscrito al grupo "NVDA en español" de Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a nvda-es+u...@googlegroups.com.
> Para ver este debate, visita https://groups.google.com/d/msgid/nvda-es/a854bc77-88ed-4824-b4bc-ed0f7daf2876%40gmail.com.
Reply all
Reply to author
Forward
0 new messages