Показать сообщение отдельно
Старый 31.01.2016, 23:33   #1
xaim96
Гость
Аватар для xaim96
Сообщений: n/a
Благодарностей:
0 всего

Эмуляция нажатия клавиш в BDO ( Второй способ )


Мини гайд по эмуляции.

Скачиваем тут исходники, либо компилим либу, либо добавляем к коду (если с/с++)
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 20 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Чтобы его прочитать, вы должны заработать сообщения. Как это сделать бесплатно, описано в правилах форума. Как купить доступ, описано в Платных услугах.


Использование.
Код:
InterceptionContext KeyState::context;
InterceptionDevice KeyState::device;
InterceptionKeyStroke KeyState::stroke;
//Функция потока, обычно
DWORD WINAPI KeyState::StartHook(LPVOID lpParam){
context = interception_create_context();
interception_set_filter(context, interception_is_keyboard, INTERCEPTION_FILTER_KEY_UP);
		while (interception_receive(context, device = interception_wait(context), (InterceptionStroke *)&stroke, 1) > 0)
{
Переадресуем клавишу.
Нам надо прочесть одну клавишу от пользователя что получить нужный контекст
interception_send(context, device, (InterceptionStroke *)&stroke, 1);
}
interception_destroy_context(context);
}
//Отправка клавиши после получения контекста. sc - key scan code
void KeyState::Send(WORD sc){
KeyState::stroke.code = sc;
KeyState::stroke.state = 0;//клавиша нажата
interception_send(KeyState::context, KeyState::device, (InterceptionStroke *)&KeyState::stroke, 1);//отправка
Sleep(64); //Задержка перед событие отпуска клавиши
KeyState::stroke.state = 1;//клавиша отпущена
interception_send(KeyState::context, KeyState::device, (InterceptionStroke *)&KeyState::stroke, 1);//отправка
};
Сорри за нечитабельность, на гит хабе есть примеры

Последний раз редактировалось Big Bad Sensey; 01.02.2016 в 14:15.
 
Ответить с цитированием
Сказали спасибо:
Vi_King (17.06.2017), shwed (15.04.2016), Pirog (05.02.2016)