Эмуляция клавиатуры

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
vlabar
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 02.12.2004 (Чт) 9:17

Эмуляция клавиатуры

Сообщение vlabar » 02.12.2004 (Чт) 10:26

Есть радиотерминал со встроенным считывателем штрихкодов. Операционка WindowsCE. Необходимо чтобы при чтении штрихкода данные из буфера попадали в поле ввода любого окна независимо от того какое приложение работает(активно). Т.е. как будто ввод идет с клавиатуры( где стоит курсор туда и данные и должны попасть). Подскажите спецы в каком направлении копать? Сам подозреваю что нужно использовать API функции

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 02.12.2004 (Чт) 10:59

Думаю, копать надо в направлении keybd_event.

Код: Выделить всё
Public Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)


Функция эмулирует нажатия на клавиши, так что символы будут попадать в выделенное поле ввода.

П.С. сейчас у меня API-Guide не работает, так что прошу кого-либо выложить пример для keybd_event.

vlabar
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 02.12.2004 (Чт) 9:17

Эмуляция клавиатуры

Сообщение vlabar » 02.12.2004 (Чт) 12:07

Написал программку с использованием keybd_event, беру из буфера поочередно символы и эмулирую нажатие и отпускание клавиш -РАБОТАЕТ, но только когда мой проект активен(подсвечен) в поле ввода другого окна (когда окно моего проекта затенено) не происходит ввод:(
У меня проект с формой, может надо чтобы код как то отвязать от формы? что бы от выполнялся своим процессом независимым? как это сделать?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 02.12.2004 (Чт) 19:50

А нельзя ли кусочек кода в студию? У нас сейчас, извините, телепаты в отпуске, непонятно, что Вы имеете в виду.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 02.12.2004 (Чт) 20:04

а если использовать для этого DirectInput? он может отлавливать нажатия клавиш даже если окно не в фокусе
ХЎ

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 02.12.2004 (Чт) 20:08

Минуточку. Нам же, вроде, надо не отлавливать нажатие, а нажимать на клавиши. Нажатия и без DirectInput легко ловятся хуками и таймерами %)

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 02.12.2004 (Чт) 21:11

А SetKeyboardState не подходит? Вроде бы самое то.......

The SetKeyboardState function copies a 256-byte array of keyboard key states into the calling thread’s keyboard-input state table.

Код: Выделить всё
Declare Function SetKeyboardState Lib "user32" Alias "SetKeyboardState" (lppbKeyState As Byte) As Long


· lpKeyState
Points to a 256-byte array that contains keyboard key states.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.12.2004 (Пт) 3:07

Функцию SendInput зацени...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 03.12.2004 (Пт) 13:11

Я заценил.
Очень неплохо, я о такой и не знал.....

Sergey-13
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 119
Зарегистрирован: 23.01.2004 (Пт) 16:02
Откуда: Саранск

Сообщение Sergey-13 » 03.12.2004 (Пт) 14:08

Всем привет
Скамими устройствами мне приходилось работать и так возвращают значение штрих кода в активное приложение, будь то ворд, аксел или твоя ворма с текстболом
Правда виндуса были хр


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Bing-бот и гости: 5

    TopList