Показать сообщение отдельно
  #1  
Старый 10.02.2013, 20:29
centuriy centuriy вне форума
Прохожий
 
Регистрация: 03.11.2012
Сообщения: 5
Репутация: 10
По умолчанию Глобальный хук и WM_KEYUP

Здравствуйте! Все таки решился использовать dll для хука, только пожалуйста помогите разобраться коде данной функции, не могу его переделать чтоб хук реагировал только при отпускании (KeyUP) клавиши:

Код:
function KeyHookFunc(Code, VirtualKey, KeyStroke: integer): LRESULT; stdcall;
var
  msgl: PEVENTMSG;
begin
  Result:=0;
  if Code=HC_NOREMOVE then Exit;
  Result:=CallNextHookEx(hK,Code,VirtualKey,KeyStroke);
  if Code<0 then Exit;
  if (Code=HC_ACTION) then
  begin
    msgl := Pointer(KeyStroke);     // Без этих двух строчек функция работает
    if msgl.message = WM_KEYUP then // идеальною, но надо чтоб хук реагировал только
    begin                           // на отпускание клавиш. П О М О Г И Т Е !
      if((KeyStroke and (1 shl 30))<>0) then
      if not IsWindow(hA) then
      begin
        hM:=OpenFileMapping(FILE_MAP_WRITE,False,'MyHookMap');
        Hr:=MapViewOfFile(hM,FILE_MAP_WRITE,0,0,0);
        if Hr<>nil then
          hA:=Hr.AppHnd;
      end;
      if ((KeyStroke and (1 shl 30))<>0) then
      begin
        SendMessage(hA, WM_USER+2008, VirtualKey ,  KeyStroke {GetFocus});
      end;
    end;
  end;
end;
Ответить с цитированием