2013-07-01 2 views
1

У меня есть ActiveX DLL, которая в настоящее время читается из последовательного порта. Теперь я хочу, чтобы он принимал ввод с USB-устройства.VB6 - чтение с клавиатуры в ActiveX DLL

Устройство USB функционирует как стандартное устройство для интерфейса человека. То есть, если я открою Блокнот, тогда вывод устройства появится в Блокноте, как если бы он был набран на клавиатуре.

Как правило, я бы захватил события Key Up/Down, но я думаю, что мне нужна форма для этого, и моя DLL не имеет формы.

Как я могу захватить этот вход?


[Update] Я нашел http://us.generation-nt.com/answer/anyone-know-how-read-keyboard-input-within-an-activex-dll-help-7934442.html#, который утверждает, что делать, но код не будет работать, как есть использует AddressOf оператор, который может быть использован только в файле .BAS, так что не в DLL .CLS

Я даже не уверен, ищу ли я системный крючок или приложение.

Хммм, http://www.xtremevbtalk.com/showthread.php?t=77216 говорит: «Вы не можете реализовать глобальный крюк WH_KEYBOARD в VB - для него требуется стандартная (не ActiveX-библиотека DLL), поскольку она должна быть загружена в адресное пространство всех запущенных приложений».


[Верхняя дата] Таким образом, может быть, я могу форма, сделать его 1x1 пиксель и невидимым и имеют функцию GetTheData, которая показывает форму модально и собирает и возвращает данные - либо получать ввод с клавиатуры на уровне формы или в (n невидимое) управление, затем закрывает форму, возвращающую вход.

Будет ли это работать? Если кто-нибудь отправит рабочий пример, я награду за награду (я бы предпочел, чтобы форма не была видна на панели задач и не имела кнопки закрытия, пользователь не должен был знать об этом или мог закрыть ее, он должен был закрыть себя когда он получает достаточный ввод с подключенного USB-устройства HDI).

+2

Вы можете иметь .BAS модули в ActiveX DLL тоже не только .cls модули класса , У вас также могут быть модули .frm. – wqw

+0

@wqw, я новичок в VB, можете ли вы отправить ответ с дополнительной помощью (и посмотреть мой обновленный вопрос)? Спасибо – Mawg

+0

Я постоянно поражаюсь количеству людей, которые говорят, что они новы для VB6.Я имею в виду, что он не был продан Microsoft с 2001 года! Mawg - где вы получили свою копию? Я бы не прочь купить его в старые времена! –

ответ

2

Вы можете использовать RegisterRawInputDevices для контроля входа устройств HID, но для этого требуется окно для прослушивания сообщения WM_INPUT, что означает подклассирование окна.

Вот проект рабочего образца: UsbBarcodeSanner.zip

+0

Спасибо +1 за сообщение. Я проверю ваш код и получаю ответ, если ir woks. Надеюсь, что я могу сделать окно (форма?) Невидимым, без элементов управления и 1x1 пикселя. Если нет, я думаю, он может просто сказать «чтение данных», но в версии с серийным сообщением нет окна, и я не хочу путать пользователей. Мне было интересно, могу ли я читать «stdin» (да, я знаю, что это штука Unix/Linux) или «ShellExecute». Кстати, ваше окно должно быть показано модально, чтобы получить вход? – Mawg

+0

Извините, но мне непонятно, как использовать это с ActiveX DLL. Наверное, потому что я новичок в VB6. – Mawg

+1

Работает ли образец с вашим USB-сканером? – wqw

1

Я думаю, что у вас есть лучший вариант,

с помощью uesr32.dll вы можете сделать эту задачу легко,

передать этот

вас смогут использовать эту функцию

Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer

Эта библиотека обрабатывает все, что вы хотите для пользователя в окнах .. см Old Post

Я надеюсь, что это поможет ..

+0

+1 и спасибо, это не совсем то, что я хочу, но это полезно знать. Спасибо – Mawg

+0

В этом случае я думаю, что вы работаете с некоторым оборудованием с помощью USB? или хотите считыватель Key-stroke? или что-то еще .. – MarmiK

+0

в случае аппаратного обеспечения вы можете использовать USB для последовательного Bridge (Virtual), который доступен в большинстве мобильных данных. Решения для подключения (за исключением android). Вот один пример драйвера, ссылающийся на эту ссылку http: // www.pjrc.com/teensy/usb_keyboard.html, который должен помочь :) Или используйте 'WINUSB' http://msdn.microsoft.com/en-us/library/windows/hardware/ff540174(v=vs.85). aspx - это отличная работа окон. – MarmiK

Смежные вопросы