Я сделал небольшое приложение, которое отправляет текст в блокнот через SendMessage и EM_REPLACESEL.Как читать данные из lParam (значение указателя)
Теперь я пытаюсь подключить блокнот, чтобы получить значение EM_REPLACESEL (значение lParam и в этом случае текст «GET THIS TEXT»).
EDIT: Смотреть эту картину: http://i.stack.imgur.com/8scNL.jpg
крючок работает отлично, моя проблема заключается для прослушивания сообщения EM_REPLACESEL и захватить значение из LPARAM. Так что теперь я хочу, чтобы перехватывать сообщения EM_REPLACESEL
LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
Beep (2000,100);
return(CallNextHookEx(g_hHook, nCode, wParam, lParam));
}
:
Этот код работает отлично, при отправке сообщений в блокнот. Это не работы:
LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == EM_REPLACESEL)
{
Beep (2000,100);
}
return(CallNextHookEx(g_hHook, nCode, wParam, lParam));
}
1) Как прослушивать сообщения EM_REPLACESEL?
2) Когда я получил сообщение о том, как получить значение lParam и, например, показать его в MessageBox. Что-то вроде этого:
LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == EM_REPLACESEL)
{
MSG *lpMsg;
lpMsg = (MSG *) lParam;
MessageBox(NULL,(LPCWSTR)lpMsg,NULL,NULL);
}
return(CallNextHookEx(g_hHook, nCode, wParam, lParam));
}
Благодаря
Отлично, Реми.Это работает.Спасибо.Как мне показать значение в Это поле для сообщений: MessageBox (NULL, (LPCWSTR) НВП, NULL, NULL); ? –
'CWPSTRUCT' - это структура, а не строка. Вы не можете вывести его на 'LPCWSTR'. Чтобы извлечь текст из сообщения 'EM_REPLACESEL', вам нужно вместо этого называть поле' CWPSTRUCT :: lParam': 'if (IsUnicodeWindow (cwps-> hwnd)) MessageBoxW (NULL, (LPWSTR) cwps-> lParam, .. .); else MessageBoxA (NULL, (LPSTR) cwps-> lParam, ...); ' –