От пользы к шутке
Этот пример очень легко превратить в шуточный. Достаточно только поменять в динамической библиотеке пару параметров, и работа программы изменится. Попробуем обрабатывать нажатие левой кнопки мышки и не уничтожать символ пароля, а устанавливать его. В этом случае, при любом щелчке пользователя, весь текст будет замещаться установленным символом. В листинге 3.8 показано, как будет выглядеть функция SysMsgProc.
Листинг 3.8. Ловушка сообщений, в которой любой текст замещается символом "d" |
int code, // hook code WPARAM wParam, // removal flag LPARAM lParam // address of structure with message ) { //Передать сообщение другим ловушкам в системе CallNextHookEx(SysHook, code, wParam, lParam);
//Проверяю сообщение if (code == HC_ACTION) { //Получаю идентификатор окна сгенерировавшего сообщение Wnd=((tagMSG*)lParam)-hwnd;
//Проверяю тип сообщения. //Если была нажата левая кнопка мыши if (((tagMSG*)lParam)-message == WM_LBUTTONDOWN) { SendMessage(Wnd, EM_SETPASSWORDCHAR, 100, 0); InvalidateRect(Wnd, 0, true); } }
return 0; }
Здесь проверяется нажатие левой кнопки мышки, и функция SendMessage отправляет в качестве третьего параметра число 100, что соответствует символу "d". Можно указать код любого другого символа. Результат — в каком поле пользователь не щелкнет мышкой, весь текст заместится указанным символом. На 3.15 показано окно свойств документа программы MS Word, в котором вся информация отображается символом "d".
3.15. Превращение свойств документа
Примечание |
Исходный код примера , описанного в этом разделе , вы можете найти на компакт - диске в каталоге \Demo\Chapter3\SetPassDLL. |