Como obtener handles a otras aplicaciones que esten mostrando vent

25/02/2007 - 14:36 por PAFH | Informe spam
Hola:
Me gustaria saber como puedo realizar las siguientes tareas en c#, o ideas
de como puedo realizarlas:

1.- Como puedo saber que otras ventanas se están mostrando en pantalla?
Ventanas que no pertenezcan a mi aplicación.
He visto un ejemplo para listar los procesos que se están ejecutando en ese
momento, pero me muestra todos, incluso los que no están mostrando nada en
pantalla.
2.- Como puedo hacer para averiguar que ventana (de otro programa) tenía el
foco antes que mi programa, o, como puedo saber hacia que ventana va el foco
cuando yo lo pierdo.

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
25/02/2007 - 17:13 | Informe spam
Hola,

Para hacer lo que dices existen funciones en la API de Windows (por ejemplo,
EnumWindows),
a las q puedes llamar desde C# mediante PInvoke. Hay mucha info sobre el
tema em

http://www.pinvoke.net

Slds - Octavio




"PAFH" escribió en el mensaje
news:
Hola:
Me gustaria saber como puedo realizar las siguientes tareas en c#, o ideas
de como puedo realizarlas:

1.- Como puedo saber que otras ventanas se están mostrando en pantalla?
Ventanas que no pertenezcan a mi aplicación.
He visto un ejemplo para listar los procesos que se están ejecutando en
ese
momento, pero me muestra todos, incluso los que no están mostrando nada en
pantalla.
2.- Como puedo hacer para averiguar que ventana (de otro programa) tenía
el
foco antes que mi programa, o, como puedo saber hacia que ventana va el
foco
cuando yo lo pierdo.

Muchas gracias.
Respuesta Responder a este mensaje
#2 RFOG
26/02/2007 - 10:21 | Informe spam
Pero lo que quiere me parece que no está disponible si no instala un hook
global de ventana y realiza el traceo de todo lo que ocurre (como hacía el
Windows SPY del SDK, y si recuerdas o lo has usado también habrás notado
la bajada drástica del rendimiento).

Lo que sí puede obtener son las caracterísitcas de cada ventana mediante
llamadas a GetWindowsLong (creo), pero eso se tiene que hacer desde el
mismo proceso de ejecución, por lo que tendrá que insertar una DLL en cada
proceso, tarea no trivial...

Todos los caminos posibles son bastante complejos. En el libro
"Programación avanzada en Windows" de Jeffrey Richter creo que hay algo
sobre eso, supongo que todavía se podrá conseguir por algún lado.

Y también podría echarle un vistazo al Windows Internals 4th edición...

Pero adelanto que es una tarea NADA trivial.

En Sun, 25 Feb 2007 17:13:02 +0100, Octavio Hernandez
escribió:

Hola,

Para hacer lo que dices existen funciones en la API de Windows (por
ejemplo,
EnumWindows),
a las q puedes llamar desde C# mediante PInvoke. Hay mucha info sobre el
tema em

http://www.pinvoke.net

Slds - Octavio




"PAFH" escribió en el mensaje
news:
Hola:
Me gustaria saber como puedo realizar las siguientes tareas en c#, o
ideas
de como puedo realizarlas:

1.- Como puedo saber que otras ventanas se están mostrando en pantalla?
Ventanas que no pertenezcan a mi aplicación.
He visto un ejemplo para listar los procesos que se están ejecutando en
ese
momento, pero me muestra todos, incluso los que no están mostrando nada
en
pantalla.
2.- Como puedo hacer para averiguar que ventana (de otro programa) tenía
el
foco antes que mi programa, o, como puedo saber hacia que ventana va el
foco
cuando yo lo pierdo.

Muchas gracias.









Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Llevar una vida amargada lo puede cualquiera, pero amargarse la vida a
propósito es un arte que se aprende.
Respuesta Responder a este mensaje
#3 PAFH
27/02/2007 - 13:55 | Informe spam
Muchas gracias por vuestra ayuda y comentarios.
Voy a probar primero a ver si consigo poner un gestor/filtro de mensajes, y
con eso a ver si puedo capturar el cambio.
He leído algo tambien acerca de alt+tab que me da a entender que se manda un
mensaje sobre la ventana que va a coger el foco. No recuerdo ahora mismo cual
es el nombre, pero en cuanto los pruebe posteare los resultados, por si le
pueden servir de algo a alguien.
Lo dicho, mucha gracias, y espero que nos sigamos leyendo ;)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida