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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
MickeyBlueEyes
Студент
 Аватар для MickeyBlueEyes
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
15.08.2012, 01:27     Работа с клавиатурой #1
Здраствуйте, есть задача эмулировать нажатия клавиш, но winapi не выход, либо там где нада использовать эмуляцию срабатывает защита от эмуляции, хотел узнать как можна решить проблему? Писать драйвер или возможно есть варианты проще?
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
15.08.2012, 01:59     Работа с клавиатурой #2
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Здраствуйте, есть задача эмулировать нажатия клавиш, но winapi не выход, либо там где нада использовать эмуляцию срабатывает защита от эмуляции, хотел узнать как можна решить проблему? Писать драйвер или возможно есть варианты проще?
Спасибо.
- попробуй keybd_event(детальное описание в гугле)
C
1
keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0);//Отжимаем кнопку
- это кусок кода из моего блога Стрелки клавиатуры в консоли
MickeyBlueEyes
Студент
 Аватар для MickeyBlueEyes
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
15.08.2012, 15:31  [ТС]     Работа с клавиатурой #3
Спасибо, но keybd_event - winapi, а его использовать мне нельзя ;( Если кто знает в какую сторону копать?
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
15.08.2012, 16:57     Работа с клавиатурой #4
Иначе никак, ибо зависит от платформы, для winapi - mouse_event, keybd_event, в crt ничего подобного я не видел.
-=ЮрА=-
Заблокирован
Автор FAQ
15.08.2012, 17:20     Работа с клавиатурой #5
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Спасибо, но keybd_event - winapi, а его использовать мне нельзя ;( Если кто знает в какую сторону копать?
- ну можно ещё SetKeyboardState
http://vsokovikov.narod.ru/New_MSDN_...boardstate.htm
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
15.08.2012, 17:24     Работа с клавиатурой #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- ну можно ещё SetKeyboardState
http://vsokovikov.narod.ru/New_MSDN_...boardstate.htm
Это ведь тоже winapi.
D-Vampire
3 / 3 / 0
Регистрация: 16.05.2012
Сообщений: 36
16.08.2012, 09:03     Работа с клавиатурой #7
Все в конечном итоге все равно сведется к винапи. Если стоят хуки на функции, то можно либо пытаться использовать то, что не перехватывается (SendMessage например), либо снимать/блокировать их.
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)
-=ЮрА=-
Заблокирован
Автор FAQ
16.08.2012, 13:14     Работа с клавиатурой #9

Не по теме:

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

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


На счёт альтернативы АПИ MickeyBlueEyes, без него наверное только драйвером надо пытаться, я привёл SetKeyboardState в предположении что для программ с защитой от эмуляции возможно она не будет "видна", также можно непосредственно послать сообщение WM_KEYDOWN либо WM_CHAR непосредственно в окно программы, как ещё можно сделать по другом даже затрудняюсь ответить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2012, 21:00     Работа с клавиатурой
Еще ссылки по теме:

проверка оборудования, управление клавиатурой с++ C++
Работа с клавиатурой, сочетания клавиш, блокировка клавиш C++

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

Или воспользуйтесь поиском по форуму:
MickeyBlueEyes
Студент
 Аватар для MickeyBlueEyes
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
16.08.2012, 21:00  [ТС]     Работа с клавиатурой #10
спасибо, да прийдётся решать проблему драйвером.
Yandex
Объявления
16.08.2012, 21:00     Работа с клавиатурой
Ответ Создать тему
Опции темы

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