Мини гайд по эмуляции.
Скачиваем тут исходники, либо компилим либу, либо добавляем к коду (если с/с++)
|
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 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);//отправка
};
Сорри за нечитабельность, на гит хабе есть примеры