tmp002
驱动牛犊
驱动牛犊
  • 注册日期2007-01-25
  • 最后登录2008-02-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:6964回复:6

[学习]通过驱动实现模拟键盘鼠标操作的思路

楼主#
更多 发布于:2007-02-02 12:00
  最近想试着做个模拟键盘鼠标操作的小程序,几经努力终于完成了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?

希望大家将你知道的为我解惑,谢谢了

继续关注中。。。
tmp002
驱动牛犊
驱动牛犊
  • 注册日期2007-01-25
  • 最后登录2008-02-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-02-28 20:29
终于发现写驱动不是那么简单。。

但同时又发现 原来用RING0下直接端口I/O也能实现 虽然有N大局限性

如果写驱动不知道如何创建IRP来模拟按键,还是不能达到目的。。

继续研究。。
游客

返回顶部