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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
MickeyBlueEyes
Студент
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
#1

Работа с клавиатурой - C++

15.08.2012, 01:27. Просмотров 1274. Ответов 9
Метки нет (Все метки)

Здраствуйте, есть задача эмулировать нажатия клавиш, но winapi не выход, либо там где нада использовать эмуляцию срабатывает защита от эмуляции, хотел узнать как можна решить проблему? Писать драйвер или возможно есть варианты проще?
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2012, 01:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с клавиатурой (C++):

Работа с клавиатурой - C++
Чюваки!!! подскажите плз какие есть операции с клавиатурой в c/c++.....ну типа redkey как в паскале... заранее спасибо

Работа с клавиатурой. - C++
Итак, понадобилось поработать с клавой. Прочитал про keybd_event и иже с ними. Но вопрос-можно ли отключить клавиатуру? То есть, чтобы при...

Работа с клавиатурой в графическом режиме - C++
Пишу программу в графическом режиме. Для ввода чисел написал свою функцию, где использую getch(). Но заметил, что если запустить программу...

Работа с клавиатурой. Графический режим. - C++
Построить прямоугольник фиксированных размеров. Нажатие на клавишу Enter циклически изменяет цвет прямоугольника, F10 — завершает работу...

Работа с клавиатурой, сочетания клавиш, блокировка клавиш - C++
Здравствуйте! Есть такая вот задачка: Разработать программу обработки прерывания от клавиатуры, которая должна: распознавать...

проверка оборудования, управление клавиатурой с++ - C++
Написать программу на С++ ( у меня стоит Visual Studio 2010 Express , C++) с помою вместе нажатых клавиш правый Shift + левый Alt + F7 ...

9
-=ЮрА=-
Заблокирован
Автор FAQ
15.08.2012, 01:59 #2
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Здраствуйте, есть задача эмулировать нажатия клавиш, но winapi не выход, либо там где нада использовать эмуляцию срабатывает защита от эмуляции, хотел узнать как можна решить проблему? Писать драйвер или возможно есть варианты проще?
Спасибо.
- попробуй keybd_event(детальное описание в гугле)
C
1
keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0);//Отжимаем кнопку
- это кусок кода из моего блога Стрелки клавиатуры в консоли
1
MickeyBlueEyes
Студент
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
15.08.2012, 15:31  [ТС] #3
Спасибо, но keybd_event - winapi, а его использовать мне нельзя ;( Если кто знает в какую сторону копать?
0
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
15.08.2012, 16:57 #4
Иначе никак, ибо зависит от платформы, для winapi - mouse_event, keybd_event, в crt ничего подобного я не видел.
0
-=ЮрА=-
Заблокирован
Автор FAQ
15.08.2012, 17:20 #5
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Спасибо, но keybd_event - winapi, а его использовать мне нельзя ;( Если кто знает в какую сторону копать?
- ну можно ещё SetKeyboardState
http://vsokovikov.narod.ru/New_MSDN_...boardstate.htm
1
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
15.08.2012, 17:24 #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- ну можно ещё SetKeyboardState
http://vsokovikov.narod.ru/New_MSDN_...boardstate.htm
Это ведь тоже winapi.
0
D-Vampire
3 / 3 / 0
Регистрация: 16.05.2012
Сообщений: 36
16.08.2012, 09:03 #7
Все в конечном итоге все равно сведется к винапи. Если стоят хуки на функции, то можно либо пытаться использовать то, что не перехватывается (SendMessage например), либо снимать/блокировать их.
0
KostyaKulakov
Заблокирован
16.08.2012, 11:50 #8
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
30
31
32
33
34
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{  
    cout << "Press a key" << endl;
 
    int key = _getch();
    
    if (key == 224)
    {
        int code = _getch();
        
        switch (code)
        {
            case 75:
                cout << "Arrow Left" << endl;
                break;
            case 72:
                cout << "Arrow Up" << endl;
                break;
            case 77:
                cout << "Arrow Right" << endl;
                break;
            case 80:
                cout << "Arrow Down" << endl;
                break;
            default:
                cout << "Not an arrow key" << endl;
        }
    }
 
}
Добавлено через 45 секунд
если нужно повторение. то заключи в while(true)
0
-=ЮрА=-
Заблокирован
Автор FAQ
16.08.2012, 13:14 #9

Не по теме:

KostyaKulakov, задание стоит эмулировать нажатие клавиши, тобишь програмно нажать кнопку

Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Здраствуйте, есть задача эмулировать нажатия клавиш
а не парсить стрелки


На счёт альтернативы АПИ MickeyBlueEyes, без него наверное только драйвером надо пытаться, я привёл SetKeyboardState в предположении что для программ с защитой от эмуляции возможно она не будет "видна", также можно непосредственно послать сообщение WM_KEYDOWN либо WM_CHAR непосредственно в окно программы, как ещё можно сделать по другом даже затрудняюсь ответить
1
MickeyBlueEyes
Студент
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
16.08.2012, 21:00  [ТС] #10
спасибо, да прийдётся решать проблему драйвером.
0
16.08.2012, 21:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2012, 21:00
Привет! Вот еще темы с ответами:

Проверить, пользуются ли сейчас клавиатурой - C++
Другими словами, нужна функция, которая возвращает true, если нажата хотя бы одна клавиша и false, если ни одна не нажата. Я так понимаю,...

проверка оборудования, управление клавиатурой с++ - C++
ПРОВЕРКА ОБОРУДОВАНИЯ, УПРАВЛЕНИЕ КЛАВИАТУРОЙ С++ Задание Разработать программу обработки прерывания от клавиатуры, которая должна: ...

Слежка за клавиатурой другого компьютера в реальном времени - C++
Нужно объединить компьютер через сеть с другим компьютером(или виртуальной машиной). При нажатии клавиши на одном компьютере, на другом...

Работа с клавиатурой - C++
при работе с курсовой столкнулся с задачей: выполнять действие сразу как только будет нажата какая-либо клавиша(желательно одна из...


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

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

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