我有一个当前从串行端口读取的 ActiveX DLL。现在我希望它接受来自 USB 设备的输入。
USB 设备用作标准人机接口设备。也就是说,如果我打开记事本,那么设备的输出将出现在记事本中,就好像它是在键盘上键入的一样。
通常,我会捕获 Key Up/Down 事件,但我认为我需要一个表单,而我的 DLL 没有表单。
如何捕获该输入?
[更新]我发现这个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 说“你不能在 VB 中实现一个全局 WH_KEYBOARD 钩子——它需要一个标准(非 ActiveX dll),因为它必须被加载到所有正在运行的应用程序的地址空间。”
[更新日期]所以,也许我可以创建一个表单,使其为 1x1 像素且不可见,并具有GetTheData
以模态方式显示表单并收集并返回数据的功能——要么在表单级别获取键盘输入,要么进入(n 不可见)控件关闭返回输入的表单。
那行得通吗?如果有人发布一个工作示例,我将奖励赏金(我希望表单在任务栏上不可见并且没有关闭按钮;用户不应该意识到它,或者能够关闭它,它应该自行关闭当它从 USB 连接的 HDI 接收到足够的输入时)。