|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 15, 2004 13:19:39 Подскажите, пожалуйста, как можно отключить у мышки среднюю кнопку, причем даже windows не должна видеть как средняя кнопка нажимается, от загрузки и до выключения. А нажатия этой самой средней кнопки надо обрабатывать по-своему, например, подсчитывать их за какой-то интервал. И давать пользоваться этой информацией своему приложению. |
|
|
Дата: Апр 15, 2004 13:27:39 · Поправил: prog Может фильтер-драйвер мыши? |
|
|
Дата: Апр 15, 2004 19:25:07WM_MBUTTONDBLCLK WM_MBUTTONDOWN WM_MBUTTONUP обрабатывай это глобальным хуком! |
|
|
Дата: Апр 15, 2004 21:35:13 А по-подробнее можно? А то я в этой теме плаваю :( |
|
|
Дата: Апр 15, 2004 21:44:10 · Поправил: KiNDeR Подробней здесь: h t t p://www.wasm.ru/article.php?article=1021007 и здесь: h t t p://www.wasm.ru/article.php?article=1001024 И еще, тебе надо чтобы мыша не реагировала на среднюю кнопку только в твоей проге или во всей системе? Оъяни задачу подробней. |
|
|
Дата: Апр 15, 2004 22:07:00 · Поправил: prog Я думал надо отрабатывать клики в фоновом режиме, а потом чтобы запустить прогу и чтобы она могла инфу по кликам получить себе. Для этого вроде фильтер-драйвер самое то. |
|
|
Дата: Апр 15, 2004 22:20:24 2Scorp - короче, ставишь хук на WM_MBUTTONDBLCLK WM_MBUTTONDOWN WM_MBUTTONUP и не возвращаешь, управление винде считаешь эти клики и используешь их в своих инетесах. Минус - если не возвращать обработку событыя дальше по цепи, есть вероятност повесить систему, но если все сделать грамотно, это можно избежать. |
|
|
Дата: Апр 15, 2004 22:33:43 Scorp Это сама прога: .386p .model flat, stdcall jumps include win32.inc includelib c:\coder\tasm\lib\import32.lib include external.inc .data ms MSGSTRUCT <?,?,?,?,?,?> hPrg dd ? hHookWnd dd ? name: db 'mousehook',0 .code start: xor ebx,ebx call GetModuleHandleA,ebx mov hPrg,eax call CreateMutexA,ebx,1,offset name call GetLastError or eax,eax jnz AlreadyRun call InstallMessageHook,ebx mov edi,offset ms message_loop: call GetMessageA,edi,ebx,ebx,ebx test eax,eax jz exit_msg_loop call TranslateMessage,edi call DispatchMessageA,edi jmp short message_loop exit_msg_loop: call UnInstallMessageHook AlreadyRun: call ExitProcess,ebx ends end start Это dll к ней: .386p .model flat, stdcall jumps include win32.inc includelib c:\coder\tasm\lib\import32.lib include chookdll.ext public DllEntryPoint public InstallMessageHook public UnInstallMessageHook ;public MessageHook .data IDDll dd ? hWnd dd ? hHook dd ? .code start: DllEntryPoint proc Histance:dword, Reason:dword, \ Reserved:dword mov eax,Histance mov IDDll,eax ExitEntry: mov eax,1 ret DllEntryPoint endp InstallMessageHook proc uses ebx edi esi, hwnd:DWORD mov eax,hwnd mov hWnd,eax call SetWindowsHookExA,WH_MOUSE,offset MessageHook,IDDll,0 mov hHook,eax ret InstallMessageHook endp UnInstallMessageHook proc call UnhookWindowsHookEx,hHook ret UnInstallMessageHook endp MessageHook proc uses ebx edi esi, MyCode:DWORD, \ wparam:DWORD, lparam:DWORD xor eax,eax inc eax cmp wparam,WM_MBUTTONDOWN je @ret1 cmp wparam,WM_MBUTTONDBLCLK je @ret1 cmp wparam,WM_MBUTTONUP je @ret1 xor eax,eax ret @ret1: ; ВОТ ТУТ ТВОЙ ОБРАБОТЧИК ret MessageHook endp ends end start Вот и все собственно.... если с компилить в таком виде как есть - будет вообще рубить среднюю кнопку, вставишь свой обработчик... |
|
|
Дата: Апр 16, 2004 14:44:45 Ух ты, спасибо Mad_C. Как я понимаю после загрузки этой проги винда больше не видит средней кнопки вообще. Это хорошо :) А если запустить её тормозить ничего не будет? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.048 |