типа таких? AbnormalStatusWnd
и о какой хронике тс имел ввиду?
Можно так, но, судя по названию, конкретно
AbnormalStatusWnd, видимо, функция обработки сообщений окна AbnormalStatus, а нам нужно другое окно. Да и дергаться она будет очень часто, так что перехватывать ее не особо хорошая затея. Я бы сделал так, патчим
CreateWindowExW, оттуда достаем
lpClassName, если он такой же, как у главного окна l2 (там константная строка, уже не помню, какая, но узнать легко), то дергаем оригинальную
CreateWindowExW, запоминая возвращенный ей
hwnd.
Навскидку есть еще пара вариантов, которые могут сработать:
1. В любом месте получаем управление в контексте главного потока
l2, и дергаем
GetActiveWindow. Может не сработать, ибо этот поток создает не одно окно, нужны тесты.
2. Ставим хук на главный поток через
SetWindowsHookEx, с типом хука
WH_CALLWNDPROC, и в
CallWndProc из параметра
lParam, который, на самом деле,
PCWPSTRUCT, вытаскиваем
hwnd. Правда, есть вероятность, что туда приходят не только события для главного окна, так что, возможно, придется потом еще дернуть
GetClassName(hwnd ...), и сравнить полученный класс с классом главного окна
l2. Этот вариант тоже нуждается в проверке, зато позволяет обойтись без изменения кодосекции, и является самым чистым.