|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 2, 2004 21:45:01 · Поправил: NoName Есть ComboBox с элементами названий "виртуальных" кнопок клавиатуры. Например VK_F1. Чтение произвожу так: .data? VK1 dd ? .code invoke SendMessage,hCB,CB_GETCURSEL,NULL,NULL invoke SendMessage,hCB,CB_GETLBTEXT,eax,addr VK1 ;Потом в одной из функций делаю: invoke SendMessage,hProcess,WM_KEYDOWN,offset VK1,NULL ;Но ничего не происходит, т.е. сообщение о нажатии данной кнопки не ставится в очередь либо ставится некорректно. |
|
|
Дата: Авг 3, 2004 07:50:58 NoName Ты хочешь эмулировать нажатие кнопок? |
|
|
Дата: Авг 3, 2004 18:35:49 да |
|
|
Дата: Авг 3, 2004 20:07:32 До меня вроде бы дошло! Это же макро их **** средства. Прекомпилятор подставляет значения VK_F1 к примеру на какое-то в основном 16-ое число, в результате мой способ подстановки путем захвата выделенной строки неподходит... А как сделать тогда по-другому. Я тк понимаю придется делать список соответствия выбранной клавиши. Т.е. пользователь выбирает из списка нужную ему кнопку, а далее программа путем считывание выбранной строки делает подстановку путем замены выбранной клавиши на цифровой эквивалент. Народ нужна ваша помощь, я хочу узнать правильно ли я рассуждаю. Спасибо. |
|
|
Дата: Авг 3, 2004 21:04:53 Значение всех VK_* последовательны: VK_A=41h, VK_B=42h и т.д. Открой MSDN и посмотри. Берешь индекс из Combobox'a, добавляешь константу(если надо) и получаешь нужный код. |
|
|
Дата: Авг 3, 2004 22:12:24 Получаю номер в 10-ой системе. А как в переменную записать 16-ый код? (пробую wsprintf) Потом к переменной добавляю константу. Должно работать. |
|
|
Дата: Авг 3, 2004 22:15:21 незнаю я все-таки как 16-ое значение зафигарить в переменную. |
|
|
Дата: Авг 3, 2004 22:16:49 Ну чем я думаю: x, X An unsigned hexadecimal integer in lowercase or uppercase. |
|
|
Дата: Авг 3, 2004 22:17:27 Простите за неграмотность, мне просто стыдно за такой ламеризм. |
|
|
Дата: Авг 3, 2004 22:32:27 · Поправил: NoName Вот это неработающее чудо.
IntX db "%x",0
buffer db 0
.if ax==CBN_SELCHANGE
invoke SendMessage,hCB,CB_GETCURSEL,NULL,NULL
;now in eax saved data index
push eax
invoke wsprintf,offset buffer,offset IntX,eax
pop eax
cmp eax,1Ah
je eq1
mov eax,offset buffer
add eax,41h
invoke wsprintf,offset buffer,offset IntX,eax
jmp exit
eq1:
mov eax,offset buffer
add eax,44h
invoke wsprintf,offset buffer,offset IntX,eax
exit:
.endif
далее в отдельной функции:
invoke SendMessage,hProcess,WM_KEYDOWN,offset buffer,NULL
|
|
|
Дата: Авг 3, 2004 22:34:42 Зачем тебе wsprintf? Берешь калькулятор и переводишь, если так надо, в десятичное. |
|
|
Дата: Авг 3, 2004 22:34:52 VK_F1 equ 70h В списке у меня оно под номером 26 (считая с 0-я). |
|
|
Дата: Авг 3, 2004 22:37:13 __Ranger Я плохо тебя понял |
|
|
Дата: Авг 3, 2004 22:37:33 Первая строчка в combobox'e какая? |
|
|
Дата: Авг 3, 2004 22:42:16 __Ranger VK_A |