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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
-=Jack=-
0 / 0 / 0
Регистрация: 15.08.2009
Сообщений: 3
#1

MapVirtualKey - C++

15.08.2009, 10:57. Просмотров 2550. Ответов 5
Метки нет (Все метки)

Здрасьте!
Юзаю keybd_event для имитации нажатия клавиш. Функция хочет, чтобы в параметрых были переданы и виртуальный код и сканкод. У меня есть только скан. Для перевода использую функцию MapVirtualKey. Проблема в том, что MapVirtualKey работает не для всех кнопок, тоесть при передаче сканкодов кнопок Home, Insert, End и ещё нескольких ф-ция возвращяет 0... В справке написано, что ф-ция возврашает 0, если нет альтернативного кода. Но ведь константы VK_HOME, VK_END и т.п. определены и работают! Подскажите, как сделать нормальное преобразование?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2009, 10:57     MapVirtualKey
Посмотрите здесь:

Delphi Обратная функция функции MapVirtualKey

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexandoros
227 / 65 / 4
Регистрация: 02.06.2009
Сообщений: 280
18.08.2009, 17:13     MapVirtualKey #2
Поиграй с uMapType
-=Jack=-
0 / 0 / 0
Регистрация: 15.08.2009
Сообщений: 3
18.08.2009, 19:02  [ТС]     MapVirtualKey #3
Играл. Ничего не даёт. Заметил, что не работают те кнопки, аналоги которых есть на цифровой клавиатуре..
Somebody
2779 / 1593 / 142
Регистрация: 03.12.2007
Сообщений: 4,175
Завершенные тесты: 1
18.08.2009, 21:02     MapVirtualKey #4
MapVirtualKey(82, MAPVK_VSC_TO_VK_EX) -> 45
MapVirtualKey(83, MAPVK_VSC_TO_VK_EX) -> 46
У меня всё нормально.
Alexandoros
227 / 65 / 4
Регистрация: 02.06.2009
Сообщений: 280
19.08.2009, 13:58     MapVirtualKey #5
ааа, ты наверное не тот сканкод подставляеш. Когда читаеш нажатия хоме, енд, цифровую клаву, стрелки, и др. спец клавиши на вход идут 2 байта. Первый 0xE0(224) указывает на раширеный символ, второй собственно и будет сканкодом.
И соответсвенно читать надо тоже 2 байта со входа клавы
(например
ch = _getch();
if(ch == 0xE0)
ch = _getch();
Somebody
2779 / 1593 / 142
Регистрация: 03.12.2007
Сообщений: 4,175
Завершенные тесты: 1
20.08.2009, 12:29     MapVirtualKey #6
Alexandoros, вообще _getch и скан коды никак не связаны. Например, скан код Escape - 1, а _getch даёт 27, а на Control, Shift вообще не реагирует.
Yandex
Объявления
20.08.2009, 12:29     MapVirtualKey
Ответ Создать тему
Опции темы

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