У меня проблемы с перехватом оконных сообщений. Мне нужно обнаружить изменения текста (заголовка) окна, поэтому я перехватываю сообщение WM_SETTEXT для интересных окон (я делаю это потому, что при создании окна заголовок окна не указывается).
При чтении документации WM_SETTEXT документации, параметр lParam указывает указатель на строку, представляющую текст окна.
Сообщение пересылается в приложение .NET с помощью SendMessage. Что я делаю в приложении .NET:
private static bool ProcessMessage(ref Message msg) {
...
string s = Marshal.PtrToStringAuto(msg.LParam) *
}
где ProcessMessage - процедура обработки сообщений в форме .NET.
Я всегда получаю пустую строку, которая не является ожидаемым результатом. Я пробовал другие методы Marshal.PtrToString *, но никто не работал.
Что я делаю не так при преобразовании IntPtr в String ?
(*) Обратите внимание, что я не могу отладить этот код, поскольку он заблокирует всю систему, поскольку все сообщения Windows перехватываются.