2 / 2 / 0
Регистрация: 17.09.2009
Сообщений: 7
|
|||||||||||
1 | |||||||||||
HOOK + Эмуляция нажатия клавиш17.09.2009, 16:31. Просмотров 5404. Ответов 4
Метки нет Все метки)
(
Есть программа которая эмулирует нажатие клавиш
Например если мы будем эмулировать строку !!23456789?? то наш hook ловит и преобразовывает их в символы !1@3456789/? SHIFT пременился не для второго символа а для третьего и для предпоследнего он не применился(((, а если после эмуляции нажатия SHIFT поставить Sleep(50); то всё нормально. Но Sleep не есть good!! Как можно обойтись без Sleep и других задержек.
0
|
|
17.09.2009, 16:31 | |
[Visual Studio C++] Имитация нажатия клавиш MFC Dialog based, перехват нажатия клавиш Глобальная эмуляция нажатия клавишь клавиатуры Отслеживание нажатия клавиш на C++ |
|
2 / 2 / 0
Регистрация: 17.09.2009
Сообщений: 7
|
|
18.09.2009, 12:01 [ТС] | 2 |
При перехвате нажатий клавиш с клавиатуры всё работает как надо, а при перехвате эмуляции клавиш иногда возникают проблемы с сиволами которые печатаются с клавишей "SHIFT" т.е.: !"№;%:?*() и тд.
Например если мы будем эмулировать строку !!23456789?? то наш hook ловит и преобразовывает их в символы !1@3456789/? SHIFT пременился не для второго символа а для третьего и для предпоследнего он не применился(((, а если после эмуляции нажатия SHIFT поставить Sleep(50); то всё нормально. Но Sleep не есть good!! Как можно обойтись без Sleep и других задержек.
0
|
![]() 2250 / 765 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
18.09.2009, 12:23 | 3 |
Я просто использовал VkKeyScan и на эмуляцию шифта вообще забивал.
Добавлено через 39 секунд Код
keybd_event(VkKeyScan(str[i]), 0,0,0); keybd_event(VkKeyScan(str[i]), 0,KEYEVENTF_KEYUP,0); ![]()
1
|
2 / 2 / 0
Регистрация: 17.09.2009
Сообщений: 7
|
|
18.09.2009, 14:05 [ТС] | 4 |
Эмуляцию делает не моя программа, а сторонних разработчиков, к её исходникам у меня доступа нет. Я просто привел пример как эмулируются нажатия.
А мне надо перехватить эти нажатия, но вот не знаю как это исправить.
0
|
Тематические курсы и обучение профессиям онлайн Профессия Разработчик на C++ (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
2 / 2 / 0
Регистрация: 17.09.2009
Сообщений: 7
|
||||||
23.09.2009, 13:13 [ТС] | 5 | |||||
Нашёл в чем дело. Проблема была в функции GetKeyboardState().
Замечания к функии Прикладная программа может вызвать эту функцию, чтобы извлечь данные о текущем состоянии всех виртуальных клавиш. Состояние изменяется тогда, когда поток удаляет сообщения клавиатуры из ее очереди сообщений. Состояние не изменяется тогда, когда сообщения клавиатуры посланы в очередь сообщений. Видимо поток не успевал удалять сообщение из очереди. Решил это так
1
|
23.09.2009, 13:13 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь. Перехватчик клавиш + эмуляция нажатия клавиш
Эмуляция нажатия клавиш Эмуляция нажатия клавиш Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |