xhdvr
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-07-13
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3344回复:14

在WDM级别产生 键盘消息,例如 模拟按下 NUMLOCK

楼主#
更多 发布于:2005-06-07 15:04
我原来一直用SendInput,keybd_event模拟键盘动作,现在,居然被一个软件给禁止了。从现象上看,模拟的时候,键盘灯会亮,但是对应的软件却失去作用。例如 手动 按下NUMLOCK 人物会走,用SendInput 方法却失效了。所以想从WDM级别入手。不知如何实现。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-08 09:50
用Kbfilter,在某个按键后补上你这个键,形成个链表
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
xhdvr
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-07-13
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-06-08 13:35
楼上的兄弟,我也是这么想的阿,可是如何实现呢?原谅我原来都没有写过驱动。我看了M$的KBFILTER,就是不知道怎么加一个键盘INPUT到链表中,还有,是否需要发个硬件指令,让真正的硬件也执行相应的动作呢?例如,我用SendInput控制键盘NUMLOCK键的时候,硬件实际上也作了响应,NUMLOCK灯会闪灭。
给我个代码片断如何阿?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-06-09 09:38
看我以前做过的屏蔽CTRL+ALT+DEL代码
然后注意
void
KbfilterDevice::KBServiceCallback(
 PKEYBOARD_INPUT_DATA InputDataStart,
 PKEYBOARD_INPUT_DATA InputDataEnd,
 PULONG InputDataConsumed)
InputDataStart指向开头
InputDataEnd  指向结尾
KEYBOARD_INPUT_DATA不象个队列,因为没有连接指针,倒象个数组
而且我发现每回只有一个按键,不知道是不是由于我的实验机不繁忙的原因,不过这不打紧
总是这样
InputDataStart指向数组[0]
InputDataEnd  指向数组[1]
你可先拷贝数组[1]到数组[2]
你可以让InputDataEnd指向数组[2]
记住要重新分配一个新空间,把整个数组元素[0][1][2]都搬过去,这样安全些
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
xhdvr
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-07-13
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-06-09 10:30
老兄,太棒了,你的屏蔽。。。的代码在哪里啊?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-06-09 10:56
http://www.driverdevelop.com/forum/viewthread.php?tid=91709
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
xhdvr
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-07-13
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-06-09 13:46
已经收了,我研究下再说。。。。,
谢谢了。
lonpine
驱动牛犊
驱动牛犊
  • 注册日期2003-12-15
  • 最后登录2008-06-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-06-15 21:27
我好好研究了你的代码,结合了ds的kbfilter,把新的键盘驱动庄上去了,但是发现,这个INPUT,OUTPUT 队列只有在键盘按键被按下的时候才调用.如果发送了个SendInput指令,只有InternalDeviceControl被调用,没有这个队列,无法加上我们所需要的键盘命令.而我的需求是不用手工按键盘的,全部由软件完成.
各位大虾,帮帮忙啊.
xhdvr
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-07-13
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-06-21 21:00
由于大老催的急,本人用现金购买源码;(我不想失业 啊,555555555)
需求如下:
不用SendInput 或者Keybd_event发送,(或者即使用这个指令发送,不会被别的程序捕捉到,例如在InternalDeviceControl 中增加键盘输入队列),在应用程序级可以控制键盘操作。
任何手段都行,包括使用WDM 驱动,只要程序验证通过,马上付现金。(本人为薪水有限,各位大虾请不要报太高价格,如果哪位大虾无偿赐教,本人感激无尽!)

我的QQ 号码:51013612 请说明 键盘驱动

急!急!急!急!
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-06-22 08:44
嘻嘻,偶给你44,老大出价几何呀?开个玩笑
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
xhdvr
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-07-13
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-06-23 17:28
价格不要超过1k,太高了我也无法兑现阿。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-06-24 17:31
下面是引用xhdvr于2005-06-23 17:28发表的:
价格不要超过1k,太高了我也无法兑现阿。

好的,我这两天一直在研究kbdclass、8042port、Kbfiltr、Ctrl2Cap这些驱动,主要是通过这个我也知道了不少东西。
看我下面这段话,你就觉得这并不是个简单的问题
其实键盘驱动不管是port驱动、过滤驱动、class驱动,因为只要在一个设备堆栈中只有一个安全权限,键盘输入是原始输入,是需要信任的子系统才能存取的,而Windows中目前只有一个信任子系统,那就是Win32子系统,这就是你上面的问题所在。而且用户的任何程序同样不能通过简单的方法与键盘堆栈的任何程序通讯,而且kbdclass,8042port驱动文件在windows文件保护中,必须绕过这个WFP。所以这是个复杂的问题。
不过我已经用另外一种方法在做,已经取得了一些重大进展。。。
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-06-25 11:17
熬了差不多三天,在犯了很多低级错误后,终于搞定了
我的qq:249791562
我已经在windows xp和windows server 2003 sp1下测试过
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
xhdvr
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-07-13
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-06-27 12:42
我已经发了信息到你的QQ,请查收。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-06-30 15:16
我已经留言到你的QQ
由于我正住院中,时间很紧,QQ上无法等到你,将我做好的发到这里,键盘模拟的前台测试,清原谅本人随便改了个DDK的例子,你安装好键盘过滤驱动后,执行gpdread -b 0,可以模拟一次NUMLOCK按键
附件名称/大小 下载次数 最后更新
kbfiltr1.rar (20KB)  149
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
游客

返回顶部