|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *Юный техник* | Помогите с Hook - убийцей мыши и клавы |
|
*Юный техник* | Помогите с Hook - убийцей мыши и клавы
|
Новый участник Сообщения: 35 |
Профиль | Отправить PM | Цитировать
Delphi5, WinXP
1. // Проблема с мышью: В чужом окне кликаю правой мышкой. При этом появляется PopupMenu. Мне это страх //как ненадо. Хочу вообще отменить правый клик (он мне там в проге не нужен) //Ан вот не получается. //Та прога на чьем окне кликаю виснет если я пишу (там где вопросики) WM_MOUSELAST //или 100000 или что другое. Чего бы ей такое в ответ послать, чтоб меню не //появлялось (нежное "умри") 2. //Проблема с клвиатурой. Спасибо за подсказку на счет WM_KEYLAST для того чтобы (см. ниже) убивать //сообщения от нажатия кнопок на клаве. Но вот незадача - как убить нажатие //кнопки ALT. Она прямо не убиенная какая-то. Я и тка и сяк, а она все жмется и жмется (и левая и правая) //Как же убить ее клик? Ответ даже на один из этих вопросов меня крайне обрадует. Вот листинг библиотеки library Dll_KeyboardHook; uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; var SysHook : HHook = 0; Wnd : Hwnd = 0; function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall; begin CallNextHookEx(SysHook, Code, wParam, lParam); // Передать сообщение другим ловушкам в системе if code = HC_ACTION then // Проверяю сообщение begin Wnd := TMsg(Pointer(lParam)^).hwnd; // Получаю идентификатор окна сгенерировавшего сообщение //Здесь надо нежно убить сообщение от правой кнопки //Замена на клик правой и многое другое не прет что то if TMsg(Pointer(lParam)^).message = WM_RBUTTONDOWN then TMsg(Pointer(lParam)^).message:=?????????????????; //WM_MOUSELAST if TMsg(Pointer(lParam)^).message =WM_KEYDOWN then begin Case (TMsg(Pointer(lParam)^).wParam) of //Эти убивыются vk_Back: TMsg(Pointer(lParam)^).message:=WM_KEYLAST; vk_Tab:TMsg(Pointer(lParam)^).message:=WM_KEYLAST; vk_Clear:TMsg(Pointer(lParam)^).message:=WM_KEYLAST; //Тут она гадюка неубиенная (и левая и правая) // vk_Menu:ShowMessage('Alt');//TMsg(Pointer(lParam)^).message:=WM_KEYLAST; //Alt // VK_LMENU{164}:TMsg(Pointer(lParam)^).message:=WM_KEYLAST; //ShowMessage('Левая Alt'); // VK_RMENU{165}:TMsg(Pointer(lParam)^).message:=WM_KEYLAST;//ShowMessage('Правая Alt'); end;//case end; end; end; // Процедура запуска. procedure RunStopHook(State : Boolean) export; stdcall; begin if State=true then begin // Запускаем ловушку. SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance, 0); end else begin // Отключить ловушку. UnhookWindowsHookEx(SysHook); SysHook := 0; end; end; exports RunStopHook index 1; begin end. ... uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; //Библиотека перехвата клавиатуры и мыши procedure RunStopHook(State : Boolean) stdcall; external 'DLL_KeyboardHook.dll' index 1; ... procedure TForm1.FormShow(Sender: TObject); begin RunStopHook(true); end procedure TForm1.FormDestroy(Sender: TObject); begin RunStopHook(false); end; |
|
Отправлено: 15:17, 18-01-2005 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Кейлоггер на дельфи. Вдруг кому ещё надо
http://www.delphifr.com/code.aspx?ID=29357 |
Отправлено: 12:58, 15-02-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 73
|
Профиль | Отправить PM | Цитировать SASHA 333[/b]
А попробуй не выпускать сообщение из ловушки... Для этого твоя функция SysMsgProc должна вернуть ненулевое значение. |
Отправлено: 01:50, 21-02-2005 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - [решено] Hook | ganselo | Программирование и базы данных | 5 | 05-06-2009 17:32 | |
*Юный техник* | Защита программы a-la shareware | AL CAPONE | Программирование и базы данных | 8 | 04-04-2005 16:35 | |
*Юный техник* | Как добавить функцию? | DIMAIN | Программирование и базы данных | 9 | 15-02-2005 00:22 | |
Delphi - Hook in delphi | Interceptor | Программирование и базы данных | 1 | 27-08-2004 21:31 | |
SysTray, Hook, WM_COPYDATA | KirillS | Программирование и базы данных | 14 | 10-06-2003 22:01 |
|