![]() |
|
|
|
|
#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"
Поэтому такой вопрос-что эта защита может такого делать,что не даёт,теперь уже получается твоей проге работать? И мб можно как-то это обойти? Ведь просто нажатия клавиш игра ловит...А тут вообще ноль эмоций. Я пробовал ещё прогу писать через хоткеи,но такая фигня. Эта игра блин,даже альт+ф4 не всегда пропускает...вот намудрилиПоследний раз редактировалось horror_, 10.08.2011 в 16:42. |
|
#6
|
|||
|
|||
|
Есть идеи какие-нить?
|
|
#7
|
|||
|
|||
|
NumLock помоги плиз))
|
|
#8
|
||||
|
||||
|
Цитата:
|
|
#9
|
|||
|
|||
|
А вообще может что-то как-то это блокировать? и почему вообще так??просто нажатия же кнопок игра ловит
|
|
#10
|
|||
|
|||
|
Итак через keybd_event,прикол в том,что получившаяся прога не просто не работает,а вообще перестают нажиматься цифры.А мб можно замутить,чтоб дллка была,ну я не знаю,по приоритету как та ловушка,которая язык меняет,тогда то полюбой получится,или мб как то замаскировать эту длл,под какую то системную. На счёт линейки...она не использует x-trap у меня в одной игре без защиты которая всё норм работает,как и в любом окне,а в другой,которой мне надо,нифига...я уже весь мозг себе вынес
|