【问】如何禁止特定蓝牙键盘的某个键?

VBAHZ 2017-07-23 07:51:02
RawInput能区分哪个硬件产生的消息
SetHook WH_KEYBOARD_LL 能截获按键,并不再传下去

但这两种事件产生的先后次序不定,而且很多时候本进程内无法获得Hook消息.
这样就无法达到禁止某键的功能.

请问,如何才能保证总是先RawInput到数据,再Hook得到按键信息?
...全文
5027 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
脆皮大雪糕 2017-08-01
  • 打赏
  • 举报
回复
引用 24 楼 VBAHZ 的回复:
多输入设备的识别功能,微软是早在XP时代就加入的功能, 十几年过去,现在国外那些编程语言.理念,概念什么的早已变成俺,不明白,看不懂, 不知道它们已经超脱时代多少年的发展了. 难道,连一个这么简单的功能都没人想到过去实现吗? 可惜,谷歌用不了... 国内的百度翻来覆去,一直没找到解决思路诶
没有普遍应用场景的东西,再简单也没有人花成本去实现。既然是小众需求注定不会得到主流支持,需要自己多花力气。还有就是如果一条路花了一定时间和成本以后发现还是没走通就要考虑其他路径了,否则成本越来越高还解决不了问题。 搞技术的容易钻牛角尖,还转不过来。要增加一些商人的思维,尽管这种思维被技术人员所不齿。
脆皮大雪糕 2017-07-31
  • 打赏
  • 举报
回复
引用 19 楼 VBAHZ 的回复:
[quote=引用 18 楼 chewinggum 的回复:] 没有什么做不到的,前面说了,不论是利用windows的一些底层api还是自己写驱动甚至抛弃windows自己写一套,都行,条条道路通罗马。主要看做这件事情的成本以及解决的问题,或者说解决问题带来的收益。前面举双鼠标这个例子,不是为了挑战技术实现,只是为了说实现它的意义不大成本偏高,实现它基本没有收益。所以微软没干这件事情,我曾经想了想后面也没打算做,甚至连研究怎样能实现的时间成本都懒得花。 我的思维还是比较看重做一件事情的经济性。当然,很多人鄙视我的这种思维方式。
可惜,本帖的功能,到现在就做不到. 用的都是微软的,但问题到底出在哪里完全没思路,MSDN上也找不到. 难道每次都是我第一个遇到的问题? 请教各位老大,是否知道问题出在哪里?或是我思路根本不对? [/quote] 也许真的是你第一个遇到,至少需要同时接入多个键盘,然后固定识别单个键盘输入的需求目前我是第一次见到。都说了,微软本身没打算完美支持这个做法,你还硬要在微软的基础上做有点勉强了。这个实现建议视通过外部设备实现,比如单片机来对接多个键盘,然后再和你的PC以特定协议对接。或者的连接两个树莓派,分别接一个键盘,然后两个派分别收到键盘输入的时候再以一定的协议告诉主机,主机就能区分是哪个键盘的输入了。 当然,这只是建议,不排除有我不知道的方法可以在windows平台上完美解决这个问题。
VBAHZ 2017-07-31
  • 打赏
  • 举报
回复
多输入设备的识别功能,微软是早在XP时代就加入的功能, 十几年过去,现在国外那些编程语言.理念,概念什么的早已变成俺,不明白,看不懂, 不知道它们已经超脱时代多少年的发展了. 难道,连一个这么简单的功能都没人想到过去实现吗? 可惜,谷歌用不了... 国内的百度翻来覆去,一直没找到解决思路诶
VBAHZ 2017-07-31
  • 打赏
  • 举报
回复
引用 22 楼 chewinggum 的回复:
[quote=引用 19 楼 VBAHZ 的回复:] [quote=引用 18 楼 chewinggum 的回复:] 没有什么做不到的,前面说了,不论是利用windows的一些底层api还是自己写驱动甚至抛弃windows自己写一套,都行,条条道路通罗马。主要看做这件事情的成本以及解决的问题,或者说解决问题带来的收益。前面举双鼠标这个例子,不是为了挑战技术实现,只是为了说实现它的意义不大成本偏高,实现它基本没有收益。所以微软没干这件事情,我曾经想了想后面也没打算做,甚至连研究怎样能实现的时间成本都懒得花。 我的思维还是比较看重做一件事情的经济性。当然,很多人鄙视我的这种思维方式。
可惜,本帖的功能,到现在就做不到. 用的都是微软的,但问题到底出在哪里完全没思路,MSDN上也找不到. 难道每次都是我第一个遇到的问题? 请教各位老大,是否知道问题出在哪里?或是我思路根本不对? [/quote] 也许真的是你第一个遇到,至少需要同时接入多个键盘,然后固定识别单个键盘输入的需求目前我是第一次见到。都说了,微软本身没打算完美支持这个做法,你还硬要在微软的基础上做有点勉强了。这个实现建议视通过外部设备实现,比如单片机来对接多个键盘,然后再和你的PC以特定协议对接。或者的连接两个树莓派,分别接一个键盘,然后两个派分别收到键盘输入的时候再以一定的协议告诉主机,主机就能区分是哪个键盘的输入了。 当然,这只是建议,不排除有我不知道的方法可以在windows平台上完美解决这个问题。[/quote] 老大,不是俺不想解决问题, //单片机来对接多个键盘,然后再和你的PC以特定协议对接。 //或者的连接两个树莓派,分别接一个键盘,然后两个派分别收到键盘输入的时候再以一定的协议告诉主机 单片机读蓝牙键盘?写驱动? 树莓派?What? 这些...俺真心不懂啊!
舉杯邀明月 2017-07-29
  • 打赏
  • 举报
回复
引用 19 楼 VBAHZ 的回复:
[quote=引用 18 楼 chewinggum 的回复:] 没有什么做不到的,前面说了,不论是利用windows的一些底层api还是自己写驱动甚至抛弃windows自己写一套,都行,条条道路通罗马。主要看做这件事情的成本以及解决的问题,或者说解决问题带来的收益。前面举双鼠标这个例子,不是为了挑战技术实现,只是为了说实现它的意义不大成本偏高,实现它基本没有收益。所以微软没干这件事情,我曾经想了想后面也没打算做,甚至连研究怎样能实现的时间成本都懒得花。 我的思维还是比较看重做一件事情的经济性。当然,很多人鄙视我的这种思维方式。
可惜,本帖的功能,到现在就做不到. 用的都是微软的,但问题到底出在哪里完全没思路,MSDN上也找不到. 难道每次都是我第一个遇到的问题? 请教各位老大,是否知道问题出在哪里?或是我思路根本不对? [/quote] 至少有一个方法肯定可以做到:   就是从“键盘驱动”层截获按键信息,然后拦截或屏蔽某些需要处理的按键信息。
VBAHZ 2017-07-29
  • 打赏
  • 举报
回复
引用 18 楼 chewinggum 的回复:
没有什么做不到的,前面说了,不论是利用windows的一些底层api还是自己写驱动甚至抛弃windows自己写一套,都行,条条道路通罗马。主要看做这件事情的成本以及解决的问题,或者说解决问题带来的收益。前面举双鼠标这个例子,不是为了挑战技术实现,只是为了说实现它的意义不大成本偏高,实现它基本没有收益。所以微软没干这件事情,我曾经想了想后面也没打算做,甚至连研究怎样能实现的时间成本都懒得花。 我的思维还是比较看重做一件事情的经济性。当然,很多人鄙视我的这种思维方式。
可惜,本帖的功能,到现在就做不到. 用的都是微软的,但问题到底出在哪里完全没思路,MSDN上也找不到. 难道每次都是我第一个遇到的问题? 请教各位老大,是否知道问题出在哪里?或是我思路根本不对?
VBAHZ 2017-07-29
  • 打赏
  • 举报
回复
引用 20 楼 Chen8013 的回复:
[quote=引用 19 楼 VBAHZ 的回复:] [quote=引用 18 楼 chewinggum 的回复:] 可惜,本帖的功能,到现在就做不到. 用的都是微软的,但问题到底出在哪里完全没思路,MSDN上也找不到. 难道每次都是我第一个遇到的问题? 请教各位老大,是否知道问题出在哪里?或是我思路根本不对?
至少有一个方法肯定可以做到:   就是从“键盘驱动”层截获按键信息,然后拦截或屏蔽某些需要处理的按键信息。 [/quote] 嗯,偶很肯定一个方法能做到: 就是从"键盘驱动"编写人员层截获按键信息,然后拦截或屏蔽某些需要处理的按键信息。 等偶有钱,就让写驱动的家伙直接给我定制一套,哈哈 可惜,俺请不起写驱动的,俺也不懂他写的驱动啊 :( 这次是这个蓝牙键盘,下次要是换一个其它的呢? 总不能每次都写一套驱动吧? 所以,希望找一种通用的办法...
脆皮大雪糕 2017-07-28
  • 打赏
  • 举报
回复
引用 17 楼 VBAHZ 的回复:
[quote=引用 16 楼 chewinggum 的回复:] [quote=引用 15 楼 VBAHZ 的回复:] [quote=引用 14 楼 chewinggum 的回复:] [quote=引用 12 楼 VBAHZ 的回复:] 两个鼠标,为什么不能有两个指针?要敢于想啊!
咱想,但微软不这么做,能咋整?[/quote] 建议你重新看一下帖子,Raw! 虽然俺自己因为不感兴趣所以没做个,但感觉自绘多个鼠标应该不是很难吧?网上C的例子很多啊[/quote] 我说的是微软本身没打算这么玩,当然,咱不理会微软自绘不是做不到,条条大路通罗马,再不行自己写底层驱动了。但是如果有这个普遍需求微软早实现了,之所以现在这个样子就是基本没人有这个需求。 我的意见不是说你做不到,是说有没有必要用这么小众化的方案做。[/quote] 不明白你的意思,是说我的帖子发的没意义? 还是说多鼠标的显示对微软来说没意义? 微软提供了工具,但想要用工具做什么,这是看你自己的想法啊 有想法的话,也可以不去做,但不能就此武断的认为肯定做不到. 微软的功能早已提供,可惜现在的谷歌不能用,否则的话,你要想多鼠标,上面一大把现成的例子, 当然,VB版没人想这样做(偶也是),所以VB的例子几乎看不到,呵呵:) 同样悲催的,我现在本帖的想法有了,但同样没见到有谁用VB做过, 所以自己尝试做,出了这么多问题,才来这里与大家交流一番, 看看问题到底出在哪里?或者有没有新的思路. 在这里,若得到"做得到"的答复,是最开心的,朝闻道,夕可死啊 :) 但任何"肯定做不到的"答复,俺会持保留意见(留个希望的火种,呵呵) [/quote] 没有什么做不到的,前面说了,不论是利用windows的一些底层api还是自己写驱动甚至抛弃windows自己写一套,都行,条条道路通罗马。主要看做这件事情的成本以及解决的问题,或者说解决问题带来的收益。前面举双鼠标这个例子,不是为了挑战技术实现,只是为了说实现它的意义不大成本偏高,实现它基本没有收益。所以微软没干这件事情,我曾经想了想后面也没打算做,甚至连研究怎样能实现的时间成本都懒得花。 我的思维还是比较看重做一件事情的经济性。当然,很多人鄙视我的这种思维方式。
VBAHZ 2017-07-26
  • 打赏
  • 举报
回复
引用 16 楼 chewinggum 的回复:
[quote=引用 15 楼 VBAHZ 的回复:] [quote=引用 14 楼 chewinggum 的回复:] [quote=引用 12 楼 VBAHZ 的回复:] 两个鼠标,为什么不能有两个指针?要敢于想啊!
咱想,但微软不这么做,能咋整?[/quote] 建议你重新看一下帖子,Raw! 虽然俺自己因为不感兴趣所以没做个,但感觉自绘多个鼠标应该不是很难吧?网上C的例子很多啊[/quote] 我说的是微软本身没打算这么玩,当然,咱不理会微软自绘不是做不到,条条大路通罗马,再不行自己写底层驱动了。但是如果有这个普遍需求微软早实现了,之所以现在这个样子就是基本没人有这个需求。 我的意见不是说你做不到,是说有没有必要用这么小众化的方案做。[/quote] 不明白你的意思,是说我的帖子发的没意义? 还是说多鼠标的显示对微软来说没意义? 微软提供了工具,但想要用工具做什么,这是看你自己的想法啊 有想法的话,也可以不去做,但不能就此武断的认为肯定做不到. 微软的功能早已提供,可惜现在的谷歌不能用,否则的话,你要想多鼠标,上面一大把现成的例子, 当然,VB版没人想这样做(偶也是),所以VB的例子几乎看不到,呵呵:) 同样悲催的,我现在本帖的想法有了,但同样没见到有谁用VB做过, 所以自己尝试做,出了这么多问题,才来这里与大家交流一番, 看看问题到底出在哪里?或者有没有新的思路. 在这里,若得到"做得到"的答复,是最开心的,朝闻道,夕可死啊 :) 但任何"肯定做不到的"答复,俺会持保留意见(留个希望的火种,呵呵)
脆皮大雪糕 2017-07-26
  • 打赏
  • 举报
回复
引用 15 楼 VBAHZ 的回复:
[quote=引用 14 楼 chewinggum 的回复:] [quote=引用 12 楼 VBAHZ 的回复:] 两个鼠标,为什么不能有两个指针?要敢于想啊!
咱想,但微软不这么做,能咋整?[/quote] 建议你重新看一下帖子,Raw! 虽然俺自己因为不感兴趣所以没做个,但感觉自绘多个鼠标应该不是很难吧?网上C的例子很多啊[/quote] 我说的是微软本身没打算这么玩,当然,咱不理会微软自绘不是做不到,条条大路通罗马,再不行自己写底层驱动了。但是如果有这个普遍需求微软早实现了,之所以现在这个样子就是基本没人有这个需求。 我的意见不是说你做不到,是说有没有必要用这么小众化的方案做。
VBAHZ 2017-07-25
  • 打赏
  • 举报
回复
引用 14 楼 chewinggum 的回复:
[quote=引用 12 楼 VBAHZ 的回复:] 两个鼠标,为什么不能有两个指针?要敢于想啊!
咱想,但微软不这么做,能咋整?[/quote] 建议你重新看一下帖子,Raw! 虽然俺自己因为不感兴趣所以没做个,但感觉自绘多个鼠标应该不是很难吧?网上C的例子很多啊
脆皮大雪糕 2017-07-25
  • 打赏
  • 举报
回复
引用 12 楼 VBAHZ 的回复:
两个鼠标,为什么不能有两个指针?要敢于想啊!
咱想,但微软不这么做,能咋整?
赵4老师 2017-07-25
  • 打赏
  • 举报
回复
4楼可能是正解。
VBAHZ 2017-07-25
  • 打赏
  • 举报
回复
两个鼠标,为什么不能有两个指针?要敢于想啊!
VBAHZ 2017-07-25
  • 打赏
  • 举报
回复
引用 10 楼 chewinggum 的回复:
觉得你这件事情根本的应该是在外围设备上进行改造,用过单片机或者别的什么获取输入信息然后再以网络或者串口之类的,定义通讯协议协议告诉windows程序。 windows本来就没打算区分键盘和鼠标的输入设备。我曾经天真的想,接入两个鼠标,是不是会有两个指针?
这里是API板块啊,不是硬件区! 蓝牙,蓝牙,蓝牙设备! 触摸,触摸,触摸动态键盘! 动手能力强的小伙伴们,怎么改造???
舉杯邀明月 2017-07-24
  • 打赏
  • 举报
回复
VBAHZ 2017-07-24
  • 打赏
  • 举报
回复
引用 2 楼 Chen8013 的回复:
老大,真的没办法了吗? 或者这条路走不通? 网上看到一条信息说 Raw和Hook同时用 会有冲突,但作者却原因不明, 在MSDN上微软也没有提到冲突问题 不知道还有其它什么思路吗?
VBAHZ 2017-07-24
  • 打赏
  • 举报
回复
引用 1 楼 chewinggum 的回复:
把那个键扣掉
触摸键盘,难道用刀刻掉触摸板?况且 键盘布局还是动态的
VBAHZ 2017-07-24
  • 打赏
  • 举报
回复
引用 3 楼 of123 的回复:
其实先后关系不大,系统速度远快于人机界面响应。 如果后者先到,你就存起来等待前者好了。
HOOK为主,只有它才能禁止按键,Raw为辅,仅用来判断是否符合条件的硬件 但实际情况是HOOK经常收不到任何信息,这时还谈什么等待
脆皮大雪糕 2017-07-24
  • 打赏
  • 举报
回复
觉得你这件事情根本的应该是在外围设备上进行改造,用过单片机或者别的什么获取输入信息然后再以网络或者串口之类的,定义通讯协议协议告诉windows程序。 windows本来就没打算区分键盘和鼠标的输入设备。我曾经天真的想,接入两个鼠标,是不是会有两个指针?
加载更多回复(5)

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧