Если ваше целевое окно следует стандартному методу для обновления заголовка, вы можете добавить ловушку, чтобы поймать точный момент, когда заголовок изменился.
Для этого вам нужно будет добавить окнахук возврата сообщения с SetWindowsHookEx
, передавая ему обработчик CallWndRetProc
из вашего кода для получения уведомлений о завершении сообщений Windows обработчиком сообщений целевого окна.
SetWindowsHookEx () @ MSDN
CallWndRetProc @ MSDN
Сообщение Windows, которое нужно перехватить, - WM_SETTEXT
, которое отправляется, чтобы вызвать изменение в тексте / заголовке по умолчанию для окна.
WM_SETTEXT @ MSDN
Если вы хотите проверить это изолированно, WM_SETTEXT
- это неявное сообщение, отправляемое после вызова SetWindowText
для изменения текста / заголовка окна.
SetWindowText () @ MSDN
Кроме того, вы также можете избавиться от крюка cbt, например WM_ACTIVATE
, WM_MOUSEACTIVATE
и WM_SETFOCUS
может быть пойман в ловушку с тем же крючком, который использовался длярэп WM_SETTEXT
.Эти сообщения охватывают различные уровни активности активации и тип для окон.
WM_ACTIVATE @ MSDN
WM_MOUSEACTIVATE @ MSDN
WM_SETFOCUS @ MSDN
Наконец, если целевое окно - это окно, которое вы создаете и управляете в своем собственном процессе, вы можете просто перехватывать эти сообщения Windows вместо использования хуков.Если невозможно использовать ваши доступные платформы для перехвата этих сообщений, SetClassLongPtr
также является другой альтернативой, которая может использоваться для реализации подкласса для окон этого типа, чтобы позволить вам перехватывать оконные сообщения.Если вы используете этот метод, вы делегируете все вызовы исходному обработчику сообщений Windows и будете действовать только во время возврата из исходной процедуры после получения интересующего сообщения.
SetClassLongPtr () @ MSDN
WindowProc @ MSDN