Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > как сделать чтобы программа отлавливала


Автор: lesniken 10.3.2011, 10:44
Здравствуйте.
В ABBYY Lingvo, есть возможность перевода слова таким образом, выделяешь слово, жмешь 2 раза ctrl+c и у тебя вылазит окошко с переводом.
Хочу реализовать такую же функциональность в моей программе. Как это сделать наиболее правильным образом? это через hook надо делать или еще как?

Автор: borisbn 10.3.2011, 11:19
Цитата(lesniken @  10.3.2011,  10:44 Найти цитируемый пост)
это через hook надо делать или еще как?

 smile 
Код

LRESULT CALLBACK KeyboardProcLL(int code,       // hook code
                                WPARAM wParam,  // virtual-key code
                                LPARAM lParam)  // keystroke-message information
{
  if ( code != HC_ACTION )
  {
    return CallNextHookEx(hHook, code, wParam, lParam);
  }
  LRESULT lr = CallNextHookEx(hHook, code, wParam, lParam);
  KBDLLHOOKSTRUCT * hookStruct = (KBDLLHOOKSTRUCT*)lParam;

  ...

  return lr;
}


hHook = SetWindowsHookEx( WH_KEYBOARD_LL, (HOOKPROC)KeyboardProcLL, HInstance, 0/*GetCurrentThreadId()*/);

Автор: lesniken 10.3.2011, 13:03
Еще есть возможность регистрации горячих клавиш. В чем отличие от регистрации хуков? в чем плюсы и минусы?

Автор: borisbn 10.3.2011, 13:35
Цитата(lesniken @  10.3.2011,  13:03 Найти цитируемый пост)
В чем отличие от регистрации хуков?

гор. клавиши будут работать только, если твоя программа активна, т.е. не свёрнута в трей и т.п., а хуки работают по-любому. Они (хуки) глобальные для всей системы

Автор: lesniken 10.3.2011, 16:59
ясно спасибо

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