Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

hook исчезает после alt+tab

2.1K
05 марта 2006 года
artlav
20 / / 27.09.2003
Ситуация такая:
Есть приложение. В него загружается библиотека dll (как plug-in).
Из этой библиотеки нужно перехватывать поступающий в основное приложение ввод с клавиатуры.

Сделал я это используя SetWindowsHookEx.
Работает нормально, но только до первого переключения задач alt-tabом, ctrl-escом или при возврате в отладчик. Причём, просто переключение задач (мышью) никакого влияния не оказывает.

Как лечить?
Помогите пожалуйста.

Код:
HHOOK trap=0;  
int pks[256];  
HINSTANCE hins;

LRESULT CALLBACK keyget(int Code, WPARAM wParam, LPARAM lParam)
{
      if(!trap) return 1;
      if(Code<0) return CallNextHookEx(trap,Code,wParam,lParam);
      //Keydown
      if ((((lParam)>>30)&1)==0){
        //GetKeyNameText(lParam,k,sizeof(k));
        //MessageBox(NULL,k,"down",MB_OK);

        pks[wParam]=1;
      }
      //keyup
      if ((((lParam)>>31)&1)==1) pks[wParam]=0;
      return CallNextHookEx(trap,Code,wParam,lParam);
}



DLLCLBK void PlgInit (HINSTANCE hDLL)
{
      int i;
      for (i=0;i<255;i++) pks=0;               //Кнопки в pks
      ohins=apiGetInstance();                       //HINSTANCE главного
      trap=SetWindowsHookEx(WH_KEYBOARD,HOOKPROC(keyget),hins,0);
}
406
07 марта 2006 года
vitaly2003s
481 / / 27.07.2004
Так то все должно быть нормально. А что именно не работает после указанных комбинаций? Не перехватывает ничего?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог