Программистам! Только С++! Как создать связку горячих клавиш без фокуса ввода???

C++ Программирование WinAPI hooks Хуки

Как создать связку горячих клавиш без фокуса ввода???
Например программа свёрнута в трей и при нажатии Ctrl+O развернулась в окно! Меня интересует конкретно перехват клавиш(ХУК)!
Погуглив я нашел несколько ссылок но там нигде не написан код ввиде одной функции или класс для какой нибудь конкретной связки! И вообще например здесь http://www.rsdn.ru/article/baseserv/winhooks.xml
(и в других) написано что для перхвата (в частности клавиатуры) необходимо чтоб функция обработки находилась в своём DLL файле! А хотя я давно пользуюсь свободной утилитой AutoHotkey в которой без
всяких дополнительных модулей реализован отличный перехват и после перехвата там связка останавливается тоесть не попадает ни в какое другое окно/приложение что мне и надо!
Исходники к AutoHotkey у меня есть, но там реализов слишком много собственных классов и типов
да и виды функций не очень впечатляют, поэтому я не смог разобраться в коде Джонатана Беннета (автора AutoHotkey)!
Дак подскажите чтоже мне делать! Тока по понятней пожалуйста!
Ксли можно то приведите закомментированный пример для связки Ctrl+O чтобы без всяких длл было!
Спасибо заранее!!!
Ответы:
Зарегистрировать сочетание горячих клавиш вызовом функции
BOOL RegisterHotKey(
   HWND hWnd,         // window to receive hot-key notification
   int id,            // identifier of hot key
   UINT fsModifiers,  // key-modifier flags
   UINT vk            // virtual-key code
);
например, так:
RegisterHotKey(hWndA, 100, MOD_ALT | MOD_SHIFT, 'P');
в результате окну с хендлом hWndA ббудет посылаться сообщение WM_HOTKEY,
для которого надо написать свою функцию обработки.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.