Форум программистов, компьютерный форум CyberForum.ru

C++

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

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

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

Доброго времени суток, цель - написать программу, выполняющую код функции (напишу самостоятельно) по нажатию клавиши. Функций должно быть несколько, соответственно и клавиш тоже. При этом программа должна перехватывать нажатия, не будучи в фокусе. А вернее, в момент, когда работает полноэкранное приложение
Порыскав в сети, вычитал, что единственный способ - установить хуки. Сначала пробовал написать подобное на Python с помощью pyHook, но программа не работала, если с нее спадал фокус. Прошу помощи в написании подобного на C++, хотя бы элементарный код, далее подредактирую сам
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
raxp
10155 / 6542 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
27.07.2014, 19:07     Отслеживание нажатий клавиш, когда окно программы не в фокусе #16
...чушь. У всех работает, а у вас не работает. Код использования в тему.
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));
    }
}
raxp
10155 / 6542 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
27.07.2014, 19:37     Отслеживание нажатий клавиш, когда окно программы не в фокусе #18
пост #14.
Canckt
0 / 0 / 0
Регистрация: 20.07.2014
Сообщений: 11
27.07.2014, 20:09  [ТС]     Отслеживание нажатий клавиш, когда окно программы не в фокусе #19
raxp, то есть Вы считаете, что стоит модернизировать вышеприведенный код путем помещения цикла for в отдельный поток или таймер?
raxp
10155 / 6542 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
27.07.2014, 22:18     Отслеживание нажатий клавиш, когда окно программы не в фокусе #20
...цикл выкинуть, в поток запилить непосредственно опрос, слип выкинуть.
Psilon
Master of Orion
Эксперт .NET
5883 / 4780 / 633
Регистрация: 10.07.2011
Сообщений: 14,404
Записей в блоге: 5
Завершенные тесты: 4
27.07.2014, 23:15     Отслеживание нажатий клавиш, когда окно программы не в фокусе #21
raxp, справедливости ради, таймер занимается тем же самым. Разве что может быть чуть эффективнее. Хотя таймером правильнее, конечно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2014, 23:38     Отслеживание нажатий клавиш, когда окно программы не в фокусе
Еще ссылки по теме:
Перехват нажатий клавиш только с определенных программ C++ WinAPI
C++ Отлов нажатий клавиш в системе и отправка на email
Отслеживание нажатия клавиш C++ Builder
C++ Отслеживание нажатия клавиш на C++
C++ WinAPI Отслеживание нажатия клавиш

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

Или воспользуйтесь поиском по форуму:
Canckt
0 / 0 / 0
Регистрация: 20.07.2014
Сообщений: 11
27.07.2014, 23:38  [ТС]     Отслеживание нажатий клавиш, когда окно программы не в фокусе #22
Цитата Сообщение от raxp Посмотреть сообщение
...цикл выкинуть, в поток запилить непосредственно опрос, слип выкинуть.
Пока это мне не по силам, пойду учить C++ как следует, постепенно и по книжке
Отдельное спасибо Psilon за живой код
Yandex
Объявления
27.07.2014, 23:38     Отслеживание нажатий клавиш, когда окно программы не в фокусе
Ответ Создать тему
Опции темы

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