![]() |
|
#1
|
|||
|
|||
![]() Всем здравствуйте.Есть этот код дллки,он должен при выключеном numlock в любом приложении всё равно печатать цифры,но чёт не печатает)) Просто ничего не происходит =( Я вот и не могу понять,что не
так в функции hook,мб кто подскажет? Код:
library lib; uses windows,messages; var H : THandle; ccode: Word; function hook(c0de, lParam : integer;Msg: TMsg;wParam : word): lresult; stdcall; var w : THandle; hw : hwnd; begin if c0de >= 0 then begin ccode:=0; case Msg.Message of WM_KEYDOWN, WM_KEYUP: case wParam of VK_HOME: ccode := VK_NUMPAD7; VK_UP: ccode := VK_NUMPAD8; VK_PRIOR: ccode := VK_NUMPAD9; VK_LEFT: ccode := VK_NUMPAD4; VK_CLEAR: ccode := VK_NUMPAD5; VK_RIGHT: ccode := VK_NUMPAD6; VK_END: ccode := VK_NUMPAD1; VK_DOWN: ccode := VK_NUMPAD2; VK_NEXT: ccode := VK_NUMPAD3; VK_INSERT: ccode := VK_NUMPAD0; VK_DELETE: ccode := VK_DECIMAL; end; if ccode <> 0 then wParam := ccode ; end; end else begin result := CallNextHookEx(H, c0de, wParam, lParam); exit; end; result := CallNextHookEx(H, c0de, wParam, lParam); End; procedure sethook(state:boolean)export; stdcall; begin if state=true then H:= SetWindowsHookEx(WH_KEYBOARD, @hook, hInstance, 0) else UnhookWindowsHookEx(H); end; exports sethook index 1; end. Последний раз редактировалось horror_, 08.08.2011 в 21:25. |
#2
|
|||
|
|||
![]() Я вижу всё тяжко...хм
![]() |
#3
|
||||
|
||||
![]() вовсе нет)
Код:
library Hook; uses Windows, Messages; type KBDLLHOOKSTRUCT = record vkCode: DWORD; scanCode: DWORD; flags: DWORD; time: DWORD; dwExtraInfo: DWORD; end; PBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT; const WH_KEYBOARD_LL: Integer = 13; var hCallWndProc: HHOOK = 0; function LowLevelKeyboardProc(code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; var dwFlags: DWORD; begin if code<0 then Result:=CallNextHookEx(0, code, wParam, lParam) else begin if (((wParam=WM_KEYDOWN) or (wParam=WM_KEYUP))) and (PBDLLHOOKSTRUCT(lParam).flags=0) then begin if (wParam=WM_KEYUP) then dwFlags:=KEYEVENTF_KEYUP else dwFlags:=0; case PBDLLHOOKSTRUCT(lParam).vkCode of VK_HOME: begin keybd_event(VK_NUMPAD7, 0, dwFlags, 0); Result:=1; end; VK_END: begin keybd_event(VK_NUMPAD1, 0, dwFlags, 0); Result:=1; end; VK_PRIOR: begin keybd_event(VK_NUMPAD9, 0, dwFlags, 0); Result:=1; end; VK_NEXT: begin keybd_event(VK_NUMPAD3, 0, dwFlags, 0); Result:=1; end; VK_UP: begin keybd_event(VK_NUMPAD8, 0, dwFlags, 0); Result:=1; end; VK_DOWN: begin keybd_event(VK_NUMPAD2, 0, dwFlags, 0); Result:=1; end; VK_LEFT: begin keybd_event(VK_NUMPAD4, 0, dwFlags, 0); Result:=1; end; VK_RIGHT: begin keybd_event(VK_NUMPAD6, 0, dwFlags, 0); Result:=1; end; VK_CLEAR: begin keybd_event(VK_NUMPAD5, 0, dwFlags, 0); Result:=1; end; VK_INSERT: begin keybd_event(VK_NUMPAD0, 0, dwFlags, 0); Result:=1; end; else Result:=CallNextHookEx(0, code, wParam, lParam); end; end else Result:=CallNextHookEx(0, code, wParam, lParam) end; end; procedure SetHook(); begin hCallWndProc:=SetWindowsHookEx(WH_KEYBOARD_LL, @LowLevelKeyboardProc, HInstance, 0); end; procedure UnSetHook(); begin if hCallWndProc<>0 then UnhookWindowsHookEx(hCallWndProc); end; exports SetHook, UnSetHook; begin end. http://data.cod.ru/118861 Пишу программы за еду. __________________ |
#4
|
|||
|
|||
![]() Благодарен непомерно,завтра попробую)
|
#5
|
|||
|
|||
![]() Ну вот попробовал(чуть изменил,а точнее,инвертировал цифры,ну чтоб при нажатии на 2-ку,например,получалась 8-ка )...всё работает везде,но не там где надо мне,а точнее в игре,на которой стоит защита онлайн игр "X-TRAP"
![]() Последний раз редактировалось horror_, 10.08.2011 в 16:42. |
#6
|
|||
|
|||
![]() Есть идеи какие-нить?
|
#7
|
|||
|
|||
![]() NumLock помоги плиз))
|
#8
|
||||
|
||||
![]() Цитата:
Пишу программы за еду. __________________ |
#9
|
|||
|
|||
![]() А вообще может что-то как-то это блокировать? и почему вообще так??просто нажатия же кнопок игра ловит
|
#10
|
||||
|
||||
![]() Когда то тоже писал авто нажималку для Lineage2. Я вобще не делал никаких перехватов и с защитой не разберался. Просто в цикле делал скрин полоски с жизнью, если меньше 10% эмулировал нажатие F12 и всё работало. Ни чего не палилось на серваке. Используй keybd_event если для данной задачи подойдёт.
If end Then begin; |
#11
|
|||
|
|||
![]() может получается так что игра стоит перед программой в цепочке ловушек.
|
#12
|
|||
|
|||
![]() Итак через keybd_event,прикол в том,что получившаяся прога не просто не работает,а вообще перестают нажиматься цифры.А мб можно замутить,чтоб дллка была,ну я не знаю,по приоритету как та ловушка,которая язык меняет,тогда то полюбой получится,или мб как то замаскировать эту длл,под какую то системную. На счёт линейки...она не использует x-trap у меня в одной игре без защиты которая всё норм работает,как и в любом окне,а в другой,которой мне надо,нифига...я уже весь мозг себе вынес
|