WinEvents es el camino a seguir aquí. La API que necesita es SetWinEventHook() - si le importa una ventana específica, use GetWindowThreadProcessId() para obtener el threadId de HWND y luego escuche los eventos solo de esa secuencia específica. Para los cambios de título de ventana, querrá el evento EVENT_OBJECT_NAMECHANGE.
Puede conectar "en contexto" o "fuera de contexto"; este último es el más simple, y significa que el evento se devuelve a su propio proceso, por lo que no necesita una DLL separada, lo que hace es posible hacerlo todo en C#; pero el hilo que llama a SetWinEventHook debe tener un bucle de mensaje (GetMessage/TranslateMessage/DispatchMessage), ya que los eventos se entregan usando una forma de mensajes detrás de escena.
En su devolución de llamada de WinEvent, deberá comprobar que HWND es lo que más le importa, ya que obtendrá cambios de nombre para cualquier UI en esa cadena de destino, posiblemente incluyendo cambios de nombre de ventana secundarios u otras cosas no te importa
-
Por cierto, se puede comprobar this answer por algún código de ejemplo de C# que utiliza WinEvents; los está usando para rastrear cambios de ventana en primer plano en todas las ventanas del escritorio; pero debería simplemente tomar unas simples modificaciones descritas arriba para seguir los cambios de nombre en una ventana específica.
¿Estás hablando de un solo navegador así como de redirecciones ...? ¿Ha buscado en Solicitud/Respuesta y accediendo a los encabezados? Sólo curiosidad por si estoy en la misma página que usted .. – MethodMan
Sí, se requiere un gancho. Estoy bastante seguro de que ya te conté sobre WH_SHELL. –
posible duplicado de [Registrar todas las ventanas que están cerradas en Windows] (http://stackoverflow.com/questions/8648386/log-all-windows-that-are-closed-in- windows) –