lejianz
驱动中牛
驱动中牛
  • 注册日期2003-03-05
  • 最后登录2023-11-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望145点
  • 贡献值0点
  • 好评度116点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2875回复:3

用SendInput来模拟HID Class设备消息

楼主#
更多 发布于:2005-02-27 17:41
用SendInput模拟键盘、鼠标的动作都没有问题,但我现在想用它来产生WM_APPCOMMAND消息。WM_APPCOMMAND消息通常是HID CLASS类Usage Page(0x0c)产生的,象WINDOWS MEDIA PLAYER中VOL+,VOL-,PLAY、PAUSE、STOP命令都是由它执行的结果。看了SendInput的MSDN说明,它不仅模拟键盘、鼠标动作,也能做其它INPUT硬件消息,但不知为何,我试了一下,用SPY++都不能得到其消息,但如果用我自己做的HID CLASS类设备却能抓到。

模拟函数如下:
VOID OnCreateAppCommandMessage(VOID)
{
    INPUT appCommand[1];
    
    appCommand[0].type = INPUT_HARDWARE;
    appCommand[0].hi.uMsg = WM_APPCOMMAND;
    appCommand[0].hi.wParaL = 0x0000;
    appCommand[0].hi.wParaH = APPCOMMAND_VOLUME_MUTE;
    
    SendInput(1, appCommand, sizeof(INPUT));

}




不知是否有大侠能指点。
一起交流,共同提高!
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-02-28 09:41
SendMessage
或广播一个消息
---内核开发合作或提供基础技术服务QQ:22863668 ---
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-28 10:08
SendMessage
或广播一个消息

SendInput就是调用SendMessage实现的,本人还提供一个PostMessage,不过估计没用
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
lejianz
驱动中牛
驱动中牛
  • 注册日期2003-03-05
  • 最后登录2023-11-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望145点
  • 贡献值0点
  • 好评度116点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2005-02-28 12:59
谢谢bmyyyud和zhangshengyu二位大侠关注,SendInput不行,只好用SenndMessage来做了。
一起交流,共同提高!
游客

返回顶部