首先你会发现keybd_event函数中是没有窗口句柄作为参数的,好奇的你一定会觉得很奇怪,那是因为,keybd_event是全局模拟按键的,只对前台窗口(即当前的活动窗口)才可以,但是如果模拟的按键正好也是某个窗口的全局热键消息,那该窗口也能接收到的

而SendMessage 、PostMessage是对指定句柄窗口都其作用的,对于做一些一外挂是非常有用的。例如可以做成这样的效果:即用SendMessage/PostMessage在某一个窗口模拟动作,而同时自己可以在其他窗口做其他事情,互不影响的!

但是有一点要注意,很多人在模拟键盘消息的时候,都会忘记模拟WM_KEYUP的消息。。。

还有一点就是,PostMessage中的窗口句柄参数,可以设置为HWND_BROADCAST,即广播,但不要理所当然地认为是对所有的窗口都起作用!!!它只对系统的顶层窗口起作用,子窗口是收不到这个消息的!!!

还要注意的是SendMessage是没有HWND_BROADCAST参数的,那是因为,SendMessage总是等发送的消息在对应的窗口消息队列 中处理完毕后才返回的(这是一种负责的行为), 细想一下就知道为什么SendMessage没有HWND_BROADCAST参数了!!

keybd_event跟SendMessage,PostMessage模拟键盘消息的区别 z相关推荐

  1. 通过PostMessage/SendMessage实现模拟键盘鼠标按键,发送不成功或出现重复按键的可参考本文

    函数原型如下: BOOL WINAPI PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); LRESULT SendMessage ...

  2. 用SendMessage/PostMessage发送WM_SIZE消息

    一般情况下,调用MoveWindow()/SetWindowPos()函数会自动引发WM_SIZE消息,但有时候也需要手工发送该消息,使窗口调整大小和布局. SendMessage()和PostMes ...

  3. android 按键消息,在android中模拟键盘消息(shell命令的方法)

    已找到解决方案[code] use: sendevent command format: sendevent device type code value [command] [device] [ty ...

  4. VC+API模拟键盘按键(详解篇)

    模拟键盘按键 ━━━━━━━━━━━━━━━━━━━━━━━━ 以前就想过如何模拟键盘按键向其他程序发送控制命令,但总是无功而返,这次也不例外. 模拟按键的方法很多,如PostMessage(不能用S ...

  5. 模拟键盘按键---很经典,总结很全面

    http://www.cnblogs.com/Jnshushi99/archive/2011/09/03/2164617.html 模拟键盘按键 ━━━━━━━━━━━━━━━━━━━━━━━━ 以前 ...

  6. 模拟键盘的终极模拟1

    这年头,在这个论坛里面已经没有什么技术贴了...呵呵~发一篇惊天地,泣鬼神的帖子.当然这个只是模拟键盘的终极模拟.呵呵~ 键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程 ...

  7. 模拟键盘的终极模拟2

    2.全局级模拟     你会发现,用上面的方法模拟按键并不是对所有程序都有效的,有的程序啊,你向它发了一大堆消息,可是它却一点反应也没有.这是怎么回事呢?这就要看具体的情况了,有些程序(特别是一些游戏 ...

  8. linux模拟键盘按键方案(收藏)

    linux模拟键盘按键方案(收藏) 在这以前,我一直以为,除非搞X Window级别的开发,否则根本没法在Linux下模拟键盘消息,或者说键盘事件.像QT,GTK这些High Level的GUI li ...

  9. VC sendinput模拟键盘按键

    介绍 sendinput在某些应用上面模拟按键无效,需要转换成unicode字符才可以模拟,特记录下. 代码 #include <stdio.h> #include <stdint. ...

最新文章

  1. 现代NLP中的零样本学习
  2. linux切换root权限
  3. Android Studio之提示Unable to delete directory ‘*****\MyApplication\app\build‘
  4. docker启动nginx后挂了_学员整理笔记系列8 启动docker后运行不了vmware该怎么办?...
  5. html目录清华,清华大学HTML、《网页设计与制作》讲义.ppt
  6. 三维点云学习(2)下-Octree
  7. 用mobiscroll.js的treelist实现弹出下拉效果
  8. MYsql隔离级别问题和解决方案,Spring的七大传播机制
  9. js事件流 事件捕获 及时间冒泡详解
  10. 颜色不透明度16进制对照表
  11. 树莓派CM4_5G扩展板
  12. LeetCode 413.等差数列的划分
  13. HarmonyOS开发详解(二)——鸿蒙开发体系详解及入门实例演示运行
  14. 〖大学生·技术人必学的职业规划白宝书 - 职业规划篇①〗- 大学生选择职业前的自我认知与剖析
  15. LDO和DCDC电路的概述和区别
  16. 魔兽争霸 php文件,[War3]Fdf文件详解,简单的UI教程演示-by CarlosX
  17. Android 7.1.2 默认输入法的设置流程分析与修改
  18. python 3.7.732位安装步骤_Python 3.7.7详细图文安装教程(附安装包) | 我爱分享网
  19. 小李开着白色跑车去云南旅游(新手)
  20. 医疗器械经营许可证,您了解多少?

热门文章

  1. DCMTK:在OFFile类中non-trivial fseek和ftell实现的测试程序
  2. C语言判断是否为happy number快乐数字的算法(附完整源码)
  3. OpenGL散射照明
  4. C++ morris inorder二叉树中序遍历(附完整源码)
  5. QT的QParameter类的使用
  6. QML基础类型之geopolygon
  7. 基于plc计算机控制系统,基于PLC的工业控制系统特点的分析
  8. B03_NumPy创建数组(numpy.empty,numpy.zeros,numpy.ones)
  9. Python基础,基本类型(整型,浮点数等)数据结构(List,dic(Map),Set,Tuple),控制语句(if,for,while,continue or break):来自学习资料
  10. 获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上