А как сообщения редактировать? o_O
Немного ошибся в предыдущем посте, сообщение называеться - WH_KEYBOARD. Должна вызываться из сторонней библиотеки, дабы хук был зарегистрирован во всей системе! Вот пример такой библтотеки:
.386
.model flat,stdcall
option casemap:none
include C:\masm32\include\windows.inc
include C:\masm32\include\user32.inc
include C:\masm32\include\kernel32.inc
includelib C:\masm32\lib\user32.lib
includelib C:\masm32\lib\kernel32.lib
.data
Msg db "Это перехват Пробела",0
Tittle db "Hook Message",0
.data?
dllhandle dd ?
hHook dd ?
hWnd dd ?
.code
DllEntry proc hInstDLL:HINSTANCE, reason:DWORD, reserved1:DWORD
mov eax,TRUE
push hInstDLL
pop dllhandle
ret
DllEntry Endp
Hook proc nCode:DWORD, wParam:DWORD, lParam:DWORD
invoke CallNextHookEx,hHook,nCode,wParam,lParam
mov eax,wParam
.if eax==20h
invoke MessageBox,hWnd,addr Msg,addr Tittle,MB_OK+MB_ICONINFORMATION
.endif
ret
Hook endp
InstallHook proc hwnd:DWORD
push hwnd
pop hWnd
invoke SetWindowsHookEx,WH_KEYBOARD,addr Hook,dllhandle,NULL
mov hHook,eax
ret
InstallHook endp
End DllEntry
Вызываеться из приложения так:
invoke LoadLibrary,addr LibraryName
.if eax==NULL
jmp @@Error
.else
mov hLib,eax
invoke GetProcAddress,hLib,addr ProcName
mov HookProc,eax
invoke GetProcAddress,hLib,addr InstallProcName
mov InstallProc,eax
call [InstallProc]
где соответственно, ProcName и InstallProcName - указатели на массивы где твоя процедура из длл, вернее её имя и соответственно её адрес который ты сохраняешь для вызова. Это всё реализованно на перехват пробела. Тоесть на нажатие и на отжатие. Если нужно залью полный сорец, или могу послать тебе на почту.