Другие языки программирования и технологии

если программа (С++) без окна, т. е. не видно, но висит в процессах, она все равно перехватывает нажатия клавиш?

Четыре вопроса, всё на одну тему.. .
Через WinApi, стандартно таких методов, AFAIK, ни один ЯП не поддерживает.
Конкретно процедура GetAsyncKeyState библиотека "user32".

Могу обрадовать, -понимать- что такое Application Programming Interface не надо =)
На уровне программирования API - это просто функция в dll библиотеке. Соответственно, её нужно зарегистрировать в программе, после чего использовать, как обычную функцию.
Достаточно в посиковике поискать пример использования API в сях или конкретно этой функции.
Суть проста, входное значение у процедуры - код клавиши, выходное - значение, нажата она или нет.
Проще говоря, надо зарегистрировать функцию и по таймеру вызывать событие
For(i=1;i<255;i++)
{
if (GetAsyncKeyState (i)) cout>>i;
}

Будут выводиться коды всех нажатые клавиш. Для конкретной клавиши, думаю, понятно, какое условие. Есть ещё пара нюансов, но суть вся выше.
Могу готовую утилитку скинуть, но она на VB.
РБ
Роман Бережной
1 907
Лучший ответ
в этом смысле не знаю к сожалению.. .
getchar работает по нажатию enter'а (по крайней мере в С точно так)
я про консольные приложения )) до виндосских еще не добрамшись, а жаль
Кареглазый ***
Кареглазый ***
2 478
нет, без шаманства сочетание клавиш получает исключительно окно, на котором фокус; шаманство же заключается в использовании WinAPI (для реализации придется изучить/понять событийную модель винды и собсно познакомиться с ВинАПИ)

очевидно, что приложение уже должно быть не консольным а АПИ-шным

(ну и о getchar'е в keyloggere (так называется приложение которое перехватывает чужие нажатия клавиш) речь тоже не идет, там все будет осуществляться получением события клавиатуры WM_KEYDOWN)

если очень надо, могу сделать шаблончик кода
Alexander Zolotarev
Alexander Zolotarev
139

Похожие вопросы