Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Canckt
0 / 0 / 0
Регистрация: 20.07.2014
Сообщений: 11
#1

Отслеживание нажатий клавиш, когда окно программы не в фокусе - C++

25.07.2014, 17:57. Просмотров 2335. Ответов 21
Метки нет (Все метки)

Доброго времени суток, цель - написать программу, выполняющую код функции (напишу самостоятельно) по нажатию клавиши. Функций должно быть несколько, соответственно и клавиш тоже. При этом программа должна перехватывать нажатия, не будучи в фокусе. А вернее, в момент, когда работает полноэкранное приложение
Порыскав в сети, вычитал, что единственный способ - установить хуки. Сначала пробовал написать подобное на Python с помощью pyHook, но программа не работала, если с нее спадал фокус. Прошу помощи в написании подобного на C++, хотя бы элементарный код, далее подредактирую сам
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2014, 17:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отслеживание нажатий клавиш, когда окно программы не в фокусе (C++):

Отслеживание нажатия клавиш на C++ - C++
Здравствуте, прочитал статью про то как перехватывать нажатие клавиш средствами...

Определить когда в фокусе CppWebBrowser1 - C++ Builder
Есть задача определить когда находится в фокусе CppWebBrowser1 и когда он теряет его. Есть в CppWebBrowser1 события OnEnter и OnExit,...

Эмулирование нажатий клавиш - C++ Builder
Вводная: С++ builder 6. Программа А та что пишу я. Программа Б не моя. Вопросы: 1)Как из неактивного окна программы А...

Отслеживание нажатия клавиш - C++ Builder
здравствуйте форумчане! подскажите пожалуйста, как сделать что бы при нажатии клавиши(например f1-f12)сработал определённый код....

Перехват нажатий клавиш - Visual C++
Уже всё перерыл, чтобы найти что-то подобное! Если нахожу пример - он либо не компилируется, либо сделан на другом языке! Попробую...

Нажатие клавиш WASD из консоли в окно - Visual C++
Доброго времени суток. Я совсем новенький в C++ и надо чтоб клавиши зажимались на 1 секунду, а то и более. Вот код: Примечание: всё...

21
raxp
10166 / 6552 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
27.07.2014, 19:07 #16
...чушь. У всех работает, а у вас не работает. Код использования в тему.
0
Canckt
0 / 0 / 0
Регистрация: 20.07.2014
Сообщений: 11
27.07.2014, 19:10  [ТС] #17
Собственно, пробовал то, что написал товарищ выше
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <Windows.h>
#include <iostream>
#include <chrono>
#include <thread>
 
int main()
{
    for (;;)
    {
        for (char i = 0; i < 255; i++)
        {
            int keyState = GetAsyncKeyState(i);
            if (keyState == 1 || keyState == -32767)
            {
                std::cout << i << std::endl;
                break;
            }
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(10));
    }
}
0
raxp
10166 / 6552 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
27.07.2014, 19:37 #18
пост #14.
0
Canckt
0 / 0 / 0
Регистрация: 20.07.2014
Сообщений: 11
27.07.2014, 20:09  [ТС] #19
raxp, то есть Вы считаете, что стоит модернизировать вышеприведенный код путем помещения цикла for в отдельный поток или таймер?
0
raxp
10166 / 6552 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
27.07.2014, 22:18 #20
...цикл выкинуть, в поток запилить непосредственно опрос, слип выкинуть.
0
Psilon
Master of Orion
Эксперт .NET
5909 / 4806 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
27.07.2014, 23:15 #21
raxp, справедливости ради, таймер занимается тем же самым. Разве что может быть чуть эффективнее. Хотя таймером правильнее, конечно.
0
Canckt
0 / 0 / 0
Регистрация: 20.07.2014
Сообщений: 11
27.07.2014, 23:38  [ТС] #22
Цитата Сообщение от raxp Посмотреть сообщение
...цикл выкинуть, в поток запилить непосредственно опрос, слип выкинуть.
Пока это мне не по силам, пойду учить C++ как следует, постепенно и по книжке
Отдельное спасибо Psilon за живой код
0
27.07.2014, 23:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2014, 23:38
Привет! Вот еще темы с ответами:

Обработка нажатий клавиш - C++ WinAPI
подскажите как обрабатывать нажатия клавиш символов (цифры, буквы) в WinApi C++, служебные клавиши обрабатываются как то так: switch...

Перехват нажатий клавиш только с определенных программ - C++ WinAPI
Мне нужно сделать перехват клавиш только с определенных программ. В голове вертятся два способа, как это реализовать. Посоветуйте, какой по...

Считывание нажатий клавиш, когда программа не в фокусе - Visual Basic
Для проверки нажатой кнопки есть команды KeyDown\Up и KeyPress, но они работают только когда программа находится в фокусе windows. Как...

Отслеживание нажатий комбинаций клавиш - C#
Здравстуйте. Подскажите пожалуйста как можно отследить нажатие клавиш fn + (f1, .. ,f12) с помощью C#. KeyPress event не видит комбинаций...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru