Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.08.2011, 20:43
horror_ horror_ вне форума
Прохожий
 
Регистрация: 08.08.2011
Сообщения: 8
Репутация: 10
Вопрос Num Lock в DLL =(

Всем здравствуйте.Есть этот код дллки,он должен при выключеном 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  
Старый 09.08.2011, 01:43
horror_ horror_ вне форума
Прохожий
 
Регистрация: 08.08.2011
Сообщения: 8
Репутация: 10
По умолчанию

Я вижу всё тяжко...хм
Ответить с цитированием
  #3  
Старый 09.08.2011, 09:45
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

вовсе нет)

Код:
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  
Старый 10.08.2011, 01:58
horror_ horror_ вне форума
Прохожий
 
Регистрация: 08.08.2011
Сообщения: 8
Репутация: 10
По умолчанию

Благодарен непомерно,завтра попробую)
Ответить с цитированием
  #5  
Старый 10.08.2011, 16:35
horror_ horror_ вне форума
Прохожий
 
Регистрация: 08.08.2011
Сообщения: 8
Репутация: 10
По умолчанию

Ну вот попробовал(чуть изменил,а точнее,инвертировал цифры,ну чтоб при нажатии на 2-ку,например,получалась 8-ка )...всё работает везде,но не там где надо мне,а точнее в игре,на которой стоит защита онлайн игр "X-TRAP" Поэтому такой вопрос-что эта защита может такого делать,что не даёт,теперь уже получается твоей проге работать? И мб можно как-то это обойти? Ведь просто нажатия клавиш игра ловит...А тут вообще ноль эмоций. Я пробовал ещё прогу писать через хоткеи,но такая фигня. Эта игра блин,даже альт+ф4 не всегда пропускает...вот намудрили

Последний раз редактировалось horror_, 10.08.2011 в 16:42.
Ответить с цитированием
  #6  
Старый 11.08.2011, 15:37
horror_ horror_ вне форума
Прохожий
 
Регистрация: 08.08.2011
Сообщения: 8
Репутация: 10
По умолчанию

Есть идеи какие-нить?
Ответить с цитированием
  #7  
Старый 14.08.2011, 15:05
horror_ horror_ вне форума
Прохожий
 
Регистрация: 08.08.2011
Сообщения: 8
Репутация: 10
По умолчанию

NumLock помоги плиз))
Ответить с цитированием
  #8  
Старый 14.08.2011, 15:09
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от horror_
NumLock помоги плиз))
нет у меня X-TRAP
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 14.08.2011, 17:27
horror_ horror_ вне форума
Прохожий
 
Регистрация: 08.08.2011
Сообщения: 8
Репутация: 10
По умолчанию

А вообще может что-то как-то это блокировать? и почему вообще так??просто нажатия же кнопок игра ловит
Ответить с цитированием
  #10  
Старый 14.08.2011, 17:42
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Когда то тоже писал авто нажималку для Lineage2. Я вобще не делал никаких перехватов и с защитой не разберался. Просто в цикле делал скрин полоски с жизнью, если меньше 10% эмулировал нажатие F12 и всё работало. Ни чего не палилось на серваке. Используй keybd_event если для данной задачи подойдёт.
__________________
If end Then begin;
Ответить с цитированием
  #11  
Старый 14.08.2011, 19:34
einstein einstein вне форума
Начинающий
 
Регистрация: 02.09.2010
Адрес: Город
Сообщения: 143
Репутация: -4653
По умолчанию

может получается так что игра стоит перед программой в цепочке ловушек.
Ответить с цитированием
  #12  
Старый 14.08.2011, 20:19
horror_ horror_ вне форума
Прохожий
 
Регистрация: 08.08.2011
Сообщения: 8
Репутация: 10
По умолчанию

Итак через keybd_event,прикол в том,что получившаяся прога не просто не работает,а вообще перестают нажиматься цифры.А мб можно замутить,чтоб дллка была,ну я не знаю,по приоритету как та ловушка,которая язык меняет,тогда то полюбой получится,или мб как то замаскировать эту длл,под какую то системную. На счёт линейки...она не использует x-trap у меня в одной игре без защиты которая всё норм работает,как и в любом окне,а в другой,которой мне надо,нифига...я уже весь мозг себе вынес
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:14.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025