Pregunta

Un poco de una pregunta extraña (desafiante?). ¿Es posible acceder a la programación de las pestañas de un navegador abierto desde una aplicación externa? Soy consciente de que es una pregunta vaga, pero escúchame:

Lo que estoy tratando de crear es una aplicación de "chat de Gmail Notificador" que parpadea un icono de notificación en la bandeja del sistema Windows cuando existe un mensaje de chat sin respuesta. En este momento, por lo que yo puedo decir, las notificaciones de chat única incorporadas en Gmail son:

  1. Activar sonidos (que no prefiero)
  2. Ver el título de la ventana / pestaña / página para el parpadeo alternativo mensaje "Gmail" / "Bla dice ...".

El problema con # 2 es: Cuando se minimiza la ventana del navegador, y cuando la pestaña de Gmail no es el activo en el navegador, el título de la ventana no cambia y yo don' t Aviso nuevos mensajes de chat.

Así que me gustaría crear una aplicación que vigila a los títulos de las fichas para mí. (Todos los títulos de las fichas, no sólo el título de la ventana, que es sólo el título de la pestaña activa.) He creado una aplicación de C # prueba de concepto para detectar mensajes de chat sin respuesta mediante la enumeración de los procesos de Windows activos y estar pendiente de la intermitente "Bla dice ..." en el título de la ventana:

Process[] procs = Process.GetProcesses();
IntPtr hWnd;
foreach (Process proc in procs)
    if ((hWnd = proc.MainWindowHandle) != IntPtr.Zero)
        if (proc.MainWindowTitle.IndexOf(" says… ") >= 0)
        ...

Sin embargo, el problema obvio de esto es que no va a funcionar cuando la pestaña de Gmail no es la pestaña activa / centrado (ya que sólo se basa en los títulos de ventanas). Así que necesito algo que puede cavar más profundo y mirar los títulos de las fichas.

Estoy abierto a cualquier cosa. Lo que había estado pensando podría trabajo es encontrar una manera de enumerar las pestañas del navegador de alguna manera (ventanas MDI secundarias? * Dedos cruzados *), pero tal vez eso no es ni siquiera cerca posible :) También estoy abierto con otras soluciones también si hay una manera de hacer esto con, por ejemplo, plugins de Firefox o algo (pero que estaría bien para integrarse con la bandeja del sistema de Windows, y no sólo existe en la zona protegida del explorador).

¿Alguien puede ayudar me empezó? Gracias de antemano.

¿Fue útil?

Solución

No es posible en general. las pestañas del navegador no necesitan ser ventanas secundarias MDI (de hecho, es casi seguro que no lo son). Usted no sabe el árbol de la ventana de un navegador arbitraria, por lo que no puede analizar eso y averiguar las pestañas (e incluso si se sabía que para un navegador específico, sin duda es un detalle de implementación que es probable que cambie, incluso entre versiones menores ). De hecho, usted no sabe si el navegador está incluso mediante la ventana de Win32 separada maneja para las pestañas, ya que sólo puede tener un asa para su ventana principal, y sacar todo en su interior por sí mismo (aplicaciones por ejemplo, Qt y WPF hacen eso, y creo que Opera en particular, hace eso, y probablemente lo mismo ocurre con Safari).

Cualquier solución a este tendrá que ser específica del navegador. Probablemente se puede escribir plugins para IE y Firefox correspondiente a comunicar esa información a su aplicación (aunque plugins de Firefox se sandboxed, así que no estoy seguro de si son incluso capaces de hacer IPC). No veo ninguna opción para Opera, Safari o Chrome.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top