Я пытаюсь получить текст из окна «Сообщения» в Spy ++, используя C ++.
я пытался отправить WM_GETTEXT
,LB_GETMESSAGE
сообщение для окна и его детей, и его не работает.
Код, протестированный в блокноте, работает нормально, как это сделать?
Я называю эту функцию EnumChildWindows (spyHwnd, EnumChildProc, 1);
// spyHwnd — дескриптор окна «Сообщения»
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
TCHAR text[40];
int length = 0;
int index = 5;
length = SendMessage(hwnd,LB_GETTEXT,index,(LPARAM)text);//or WM_GETTEXT & maxLength=40
return true;
}
Окно, которое вы ищете, имеет класс «AfxWnd80u». Я уверен, что это владелец нарисован. Похоже, он не получает никаких сообщений, кроме рисования и мыши.
Нарисованный владельцем означает, что Spy ++ хранит текст где-то внутри и вручную рисует холст окна.
Если в этом же списке вы откроете окно «Свойства сообщения», вы увидите, что используется стандартный элемент управления списка. Очевидно, что у него другое поведение — выбор выглядит по-разному, прокрутка более плавная (это плохое доказательство, поскольку эти вещи можно настраивать, но все же несколько говорит о том, почему вы делаете вещи по-другому в одном приложении?)
Если вы ищете в Интернете «получить текст AfxWnd», вы можете увидеть много вопросов без ответов. Некоторые прибегают к симуляции Ctrl + C и получению содержимого буфера обмена, но окно Spy ++ Messages, похоже, не поддерживает Ctrl + C.
Так что здесь нет простого WinAPI-способа.
Других решений пока нет …