阅读:3345回复:14
在WDM级别产生 键盘消息,例如 模拟按下 NUMLOCK
我原来一直用SendInput,keybd_event模拟键盘动作,现在,居然被一个软件给禁止了。从现象上看,模拟的时候,键盘灯会亮,但是对应的软件却失去作用。例如 手动 按下NUMLOCK 人物会走,用SendInput 方法却失效了。所以想从WDM级别入手。不知如何实现。
|
|
沙发#
发布于:2005-06-08 09:50
用Kbfilter,在某个按键后补上你这个键,形成个链表
|
|
|
板凳#
发布于:2005-06-08 13:35
楼上的兄弟,我也是这么想的阿,可是如何实现呢?原谅我原来都没有写过驱动。我看了M$的KBFILTER,就是不知道怎么加一个键盘INPUT到链表中,还有,是否需要发个硬件指令,让真正的硬件也执行相应的动作呢?例如,我用SendInput控制键盘NUMLOCK键的时候,硬件实际上也作了响应,NUMLOCK灯会闪灭。
给我个代码片断如何阿? |
|
地板#
发布于: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]都搬过去,这样安全些 |
|
|
地下室#
发布于:2005-06-09 10:30
老兄,太棒了,你的屏蔽。。。的代码在哪里啊?
|
|
5楼#
发布于:2005-06-09 10:56
http://www.driverdevelop.com/forum/viewthread.php?tid=91709
|
|
|
6楼#
发布于:2005-06-09 13:46
已经收了,我研究下再说。。。。,
谢谢了。 |
|
7楼#
发布于:2005-06-15 21:27
我好好研究了你的代码,结合了ds的kbfilter,把新的键盘驱动庄上去了,但是发现,这个INPUT,OUTPUT 队列只有在键盘按键被按下的时候才调用.如果发送了个SendInput指令,只有InternalDeviceControl被调用,没有这个队列,无法加上我们所需要的键盘命令.而我的需求是不用手工按键盘的,全部由软件完成.
各位大虾,帮帮忙啊. |
|
8楼#
发布于:2005-06-21 21:00
由于大老催的急,本人用现金购买源码;(我不想失业 啊,555555555)
需求如下: 不用SendInput 或者Keybd_event发送,(或者即使用这个指令发送,不会被别的程序捕捉到,例如在InternalDeviceControl 中增加键盘输入队列),在应用程序级可以控制键盘操作。 任何手段都行,包括使用WDM 驱动,只要程序验证通过,马上付现金。(本人为薪水有限,各位大虾请不要报太高价格,如果哪位大虾无偿赐教,本人感激无尽!) 我的QQ 号码:51013612 请说明 键盘驱动 急!急!急!急! |
|
9楼#
发布于:2005-06-22 08:44
嘻嘻,偶给你44,老大出价几何呀?开个玩笑
|
|
|
10楼#
发布于:2005-06-23 17:28
价格不要超过1k,太高了我也无法兑现阿。
|
|
11楼#
发布于:2005-06-24 17:31
下面是引用xhdvr于2005-06-23 17:28发表的: 好的,我这两天一直在研究kbdclass、8042port、Kbfiltr、Ctrl2Cap这些驱动,主要是通过这个我也知道了不少东西。 看我下面这段话,你就觉得这并不是个简单的问题 其实键盘驱动不管是port驱动、过滤驱动、class驱动,因为只要在一个设备堆栈中只有一个安全权限,键盘输入是原始输入,是需要信任的子系统才能存取的,而Windows中目前只有一个信任子系统,那就是Win32子系统,这就是你上面的问题所在。而且用户的任何程序同样不能通过简单的方法与键盘堆栈的任何程序通讯,而且kbdclass,8042port驱动文件在windows文件保护中,必须绕过这个WFP。所以这是个复杂的问题。 不过我已经用另外一种方法在做,已经取得了一些重大进展。。。 |
|
|
12楼#
发布于:2005-06-25 11:17
熬了差不多三天,在犯了很多低级错误后,终于搞定了
我的qq:249791562 我已经在windows xp和windows server 2003 sp1下测试过 |
|
|
13楼#
发布于:2005-06-27 12:42
我已经发了信息到你的QQ,请查收。
|
|
14楼#
发布于:2005-06-30 15:16
我已经留言到你的QQ
由于我正住院中,时间很紧,QQ上无法等到你,将我做好的发到这里,键盘模拟的前台测试,清原谅本人随便改了个DDK的例子,你安装好键盘过滤驱动后,执行gpdread -b 0,可以模拟一次NUMLOCK按键 |
|
|