Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Помогите отловить событие


Автор: Serg1234 7.11.2009, 14:26
Привет всем.
Имеется USB BAR сканер. 
Считаный штрих код он помещает в буфер клавиатуры и если в данный момент фокус на элементе типа TEdit - то все нормально - штрих код в эдите отобразиться.
Проблема в том, что не всегда эдит в фокусе.
Хочу отловить событие заполнения буфера клавиатуры и если эдит не в фокусе - передать ему фокус.
Как отловить это событие?

Автор: ~FoX~ 7.11.2009, 14:40
Хук
ДРКБ

Код

library Hook;
  uses Windows, SysUtils;
  const KF_UP_MY = $40000000;
var CurrentHook: HHook;
   KeyArray: array[0..19] of char;
   KeyArrayPtr: integer;
   CurFile:text;
function GlobalKeyBoardHook(code: integer; wParam: integer; lParam:
integer): longword; stdcall;
var
  i:integer;
begin
  if code< 0 then  begin
    result:=CallNextHookEx(CurrentHook,code,wParam,lparam);
  Exit;
  end;
  if ( (lParam and KF_UP_MY ) = 0) and (wParam> =65) and (wParam< =90) then  begin
     KeyArray[KeyArrayPtr]:=char(wParam);
     KeyArrayPtr:=KeyArrayPtr+1;
     if KeyArrayPtr> 19 then  begin
       for i:=0 to 19 do  begin
         Assignfile(CurFile,'d:\log.txt');
         if fileexists('d:\log.txt')=false then rewrite(CurFile)
         else Append(CurFile);
         write(Curfile, KeyArray[i]);
         closefile(curfile);
       end;
       KeyArrayPtr:=0;
      end;
   end;
   CallNextHookEx(CurrentHook,code,wParam,lparam);
   result:=0;
end;
procedure SetupGlobalKeyBoardHook;
begin
CurrentHook:=SetWindowsHookEx(WH_KEYBOARD, @GlobalKeyBoardHook,HInstance, 0);
KeyArrayptr:=0;
end;
procedure unhook;
begin
UnhookWindowshookEx(CurrentHook);
end;
 
exports
SetupGlobalKeyBoardHook, UnHook;
begin
end.

Передлаешь сам  smile 

Автор: Serg1234 7.11.2009, 15:48
 smile 
а через WndProc ни как не получится?

Автор: ~FoX~ 7.11.2009, 18:34
Цитата(Serg1234 @  7.11.2009,  16:48 Найти цитируемый пост)
а через WndProc ни как не получится? 

А какая раздница? Через винпрок, ИМХО, геморней, его перегружать надо, а ту тебе нормальный хук...

Автор: Serg1234 7.11.2009, 19:26
Спасибо.
Попытаюсь разобраться.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)