Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2012, 22:01   #1
xaero93
Пользователь
 
Регистрация: 27.02.2009
Сообщений: 53
По умолчанию Коды Виртуальных клавиш.

Есть некое приложение. В нем необходимо нажать правый энтер (который под блоком NUM клавиш. Нашел в таблице только VK_Return, а вот для другого энтера не нашел. Кто ни будь может подсказать его VK код. Эта программа различает оба Энтера. Они для нее разные.

П.с. Кликнуть мышкой не выйдет.

Спасибо заранее.
З.Ы. Сильно не бейте за некрасивый код, мне всего лишь 15 лет
xaero93 вне форума Ответить с цитированием
Старый 31.10.2012, 10:18   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

У WM_KEYUP/WM_KEYDOWN сообщения, из которого приходит VK код, есть параметр LPARAM в котором содержатся разные флаги, в том число скан код клавиш. VK код один и тот же но скан код будет отличаться. Кроме того, там есть бит "extended key" на который тоже стои обратить внимание (даже думаю с него надо начать)
waleri вне форума Ответить с цитированием
Старый 31.10.2012, 18:17   #3
xaero93
Пользователь
 
Регистрация: 27.02.2009
Сообщений: 53
По умолчанию

А есть ли какая книжка умная по данной теме, а то из МСДН справки почти не понял как применяется лпарам
З.Ы. Сильно не бейте за некрасивый код, мне всего лишь 15 лет
xaero93 вне форума Ответить с цитированием
Старый 01.11.2012, 20:15   #4
xaero93
Пользователь
 
Регистрация: 27.02.2009
Сообщений: 53
По умолчанию

http://ru.wikipedia.org/wiki/Scancode нашел скан коды для клавишь, но блин нислова, как ими пользоваться ><. Понятно что прописывать в Lparam а что прописывать не знаю. Пните кто ни будь, пожалуйста
З.Ы. Сильно не бейте за некрасивый код, мне всего лишь 15 лет
xaero93 вне форума Ответить с цитированием
Старый 01.11.2012, 21:56   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Из LPARAM извлекаете сканкод и потом сравниваете. В MSDN написано в каких битах LPARAM указан сканкод
waleri вне форума Ответить с цитированием
Старый 02.11.2012, 08:48   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Все ж написано...
p51x вне форума Ответить с цитированием
Старый 21.11.2012, 07:52   #7
xaero93
Пользователь
 
Регистрация: 27.02.2009
Сообщений: 53
По умолчанию

Осталось добавить нажатие Num-enter. С ним то как раз и проблемы. Точнее проблема в отсутсвии примера или норм описания. С английским проблемки пока. Ну вот что сейчас есть
Код:
// Имитация нажатия клавиш для входа в Управляющую систему
sleep(2000);
Label2.Caption:='Запуск управляющей систмы';
h:=findwindow(nil,'Launch EMCO Control');
PostMessage(h, WM_KEYDOWN, VK_DOWN, 0);
PostMessage(h, WM_KEYup, VK_DOWN, 0);
Sleep(1000);
Label2.Caption:='Выбор управляющей систмы';
PostMessage(h, WM_KEYDOWN, VK_Return, 0);
PostMessage(h, WM_KEYup, VK_Return, 0);
sleep(2000);
Label2.Caption:='Загрузка управляющей систмы' ;
f:=findwindow('NC2000 (c) EMCO','WinNC SINUMERIK 840D TURN (c) Emco');
Sleep(2000);
keybd_event(VK_F10, 0, 0, 0);
Keybd_event(VK_F10, 0, KEYEVENTF_KEYUP, 0);
Sleep(2000);
keybd_event(VK_F3, 0, 0, 0);
Keybd_event(VK_F3, 0, KEYEVENTF_KEYUP, 0);
Sleep(1000);
keybd_event(Vk_Return ,28, 0, 0);
Keybd_event(Vk_Return, 156, KEYEVENTF_KEYUP, 0);
Sleep(2000);
keybd_event(VK_LSHIFT , 0, 0, 0);
keybd_event(VK_f7 , 0, 0, 0);
Keybd_event(VK_f7, 0, KEYEVENTF_KEYUP, 0);
Keybd_event(VK_LSHIFT, 0, KEYEVENTF_KEYUP, 0);
Sleep(2000);
keybd_event(VK_F10 , 0, 0, 0);
Keybd_event(VK_F10, 0, KEYEVENTF_KEYUP, 0);
sleep(1000) ;
keybd_event(VK_F1 , 0, 0, 0);
Keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0);
Sleep(2000);
keybd_event(VK_F10 , 0, 0, 0);
Keybd_event(VK_F10, 0, KEYEVENTF_KEYUP, 0);
sleep(1000);
keybd_event(VK_LSHIFT , 0, 0, 0);
sleep(1000);
keybd_event(VK_F1 , 0, 0, 0);
Keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0);
sleep(1000);
Keybd_event(VK_LSHIFT, 0, KEYEVENTF_KEYUP, 0);
Sleep(2000);

Sleep(1000);
keybd_event(VK_Return , 0, 0, 0);
Keybd_event(VK_Return, 0, KEYEVENTF_KEYUP, 0);
Sleep(2000);
Наклепал программку для определения скан кода нужной мне клавиши. Программулина выдала что скан код равен E0_1C. Я так понимаю, что его нужно вставить вот в эту конструкцию
keybd_event(VK_Return , 0, 0, 0); за место второго нуля. Как я не шаманил, ничего не выходит. На прямую он не вставляется, т.к. он в 16-ой системе и делфи посылает меня подальше... Я вообще не могу понять, это же по-идее сложный скан-код (состоящий из двух). Может их по отдельности посылать надо. Может кто помочь с Русской документацией, или угостить примерчиком?

П.С. зашел на кафедру программирования в технический универ, начал спрашивать про скан коды, преподы посмотрели на меня как на идиота и сказали что вообще ничего не знают про данные вещи.
З.Ы. Сильно не бейте за некрасивый код, мне всего лишь 15 лет
xaero93 вне форума Ответить с цитированием
Старый 21.11.2012, 09:07   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Блин, ну неужели так сложно прочитать документацию?
У keybd_event есть флаги, всего два, один из них указывает, что клавиша должна рассматриваться как extended key.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Коды клавиш Elloriane Общие вопросы C/C++ 12 20.03.2012 21:32
статья - Функция GetKeyboardState копирует состояние 256 виртуальных клавиш в заданный буфер. Pblog Обсуждение статей 0 23.06.2010 05:13
коды клавиш на ТС alex(21) Общие вопросы C/C++ 1 13.11.2009 10:23
коды клавиш-? Evgenii Общие вопросы Delphi 8 28.10.2009 22:00
Коды клавиш KAMASUTR Gamedev - cоздание игр: Unity, OpenGL, DirectX 11 09.08.2007 22:25