阅读:6964回复:6
[学习]通过驱动实现模拟键盘鼠标操作的思路
最近想试着做个模拟键盘鼠标操作的小程序,几经努力终于完成了PostMessage, keybd_event的方法。但发现对于游戏Direct Input来说这一点用也没有。
查阅资料后,正式决定开始学习驱动编写,希望大家多多给予指点。 首先想到的是创建一个虚拟的键盘,让系统也认为它是一个真正的键盘,然后利用程序控制它发出指定的按键信息。在我的系统中也发现有类似设备,比如微软的"SMS Virtual Keyboard", "SMS Virtual Mouse",是在kbdclass和mouclass之下的设备。 我的思路是: 1。编写一个键盘的上层过滤驱动,创建一个虚拟设备,挂接到kbdclass设备下 2。在应用程序中打开这个设备,通知驱动程序按指定数据创建Irp实现模拟 但问题是: 1、这样虚拟设备的方法正确吗?为什么微软的"SMS Virtual Keyboard"在设备管理器中却看不到? 2、我能不能用应用程序实现上面的操作?若可以,又能否直接访问打开系统真正的键盘来操作? 3、应该创建什么样的Irp?是直接对60/64端口的I/O?但这样必定不通用,能否利用系统HAL接口实现?又如何访问HAL? 希望大家将你知道的为我解惑,谢谢了 继续关注中。。。 |
|
沙发#
发布于:2007-02-28 20:29
终于发现写驱动不是那么简单。。
但同时又发现 原来用RING0下直接端口I/O也能实现 虽然有N大局限性 如果写驱动不知道如何创建IRP来模拟按键,还是不能达到目的。。 继续研究。。 |
|