keybd_event跟SendMessage,PostMessage模拟键盘消息的区别 z
首先你会发现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相关推荐
- 通过PostMessage/SendMessage实现模拟键盘鼠标按键,发送不成功或出现重复按键的可参考本文
函数原型如下: BOOL WINAPI PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); LRESULT SendMessage ...
- 用SendMessage/PostMessage发送WM_SIZE消息
一般情况下,调用MoveWindow()/SetWindowPos()函数会自动引发WM_SIZE消息,但有时候也需要手工发送该消息,使窗口调整大小和布局. SendMessage()和PostMes ...
- android 按键消息,在android中模拟键盘消息(shell命令的方法)
已找到解决方案[code] use: sendevent command format: sendevent device type code value [command] [device] [ty ...
- VC+API模拟键盘按键(详解篇)
模拟键盘按键 ━━━━━━━━━━━━━━━━━━━━━━━━ 以前就想过如何模拟键盘按键向其他程序发送控制命令,但总是无功而返,这次也不例外. 模拟按键的方法很多,如PostMessage(不能用S ...
- 模拟键盘按键---很经典,总结很全面
http://www.cnblogs.com/Jnshushi99/archive/2011/09/03/2164617.html 模拟键盘按键 ━━━━━━━━━━━━━━━━━━━━━━━━ 以前 ...
- 模拟键盘的终极模拟1
这年头,在这个论坛里面已经没有什么技术贴了...呵呵~发一篇惊天地,泣鬼神的帖子.当然这个只是模拟键盘的终极模拟.呵呵~ 键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程 ...
- 模拟键盘的终极模拟2
2.全局级模拟 你会发现,用上面的方法模拟按键并不是对所有程序都有效的,有的程序啊,你向它发了一大堆消息,可是它却一点反应也没有.这是怎么回事呢?这就要看具体的情况了,有些程序(特别是一些游戏 ...
- linux模拟键盘按键方案(收藏)
linux模拟键盘按键方案(收藏) 在这以前,我一直以为,除非搞X Window级别的开发,否则根本没法在Linux下模拟键盘消息,或者说键盘事件.像QT,GTK这些High Level的GUI li ...
- VC sendinput模拟键盘按键
介绍 sendinput在某些应用上面模拟按键无效,需要转换成unicode字符才可以模拟,特记录下. 代码 #include <stdio.h> #include <stdint. ...
最新文章
- 现代NLP中的零样本学习
- linux切换root权限
- Android Studio之提示Unable to delete directory ‘*****\MyApplication\app\build‘
- docker启动nginx后挂了_学员整理笔记系列8 启动docker后运行不了vmware该怎么办?...
- html目录清华,清华大学HTML、《网页设计与制作》讲义.ppt
- 三维点云学习(2)下-Octree
- 用mobiscroll.js的treelist实现弹出下拉效果
- MYsql隔离级别问题和解决方案,Spring的七大传播机制
- js事件流 事件捕获 及时间冒泡详解
- 颜色不透明度16进制对照表
- 树莓派CM4_5G扩展板
- LeetCode 413.等差数列的划分
- HarmonyOS开发详解(二)——鸿蒙开发体系详解及入门实例演示运行
- 〖大学生·技术人必学的职业规划白宝书 - 职业规划篇①〗- 大学生选择职业前的自我认知与剖析
- LDO和DCDC电路的概述和区别
- 魔兽争霸 php文件,[War3]Fdf文件详解,简单的UI教程演示-by CarlosX
- Android 7.1.2 默认输入法的设置流程分析与修改
- python 3.7.732位安装步骤_Python 3.7.7详细图文安装教程(附安装包) | 我爱分享网
- 小李开着白色跑车去云南旅游(新手)
- 医疗器械经营许可证,您了解多少?
热门文章
- DCMTK:在OFFile类中non-trivial fseek和ftell实现的测试程序
- C语言判断是否为happy number快乐数字的算法(附完整源码)
- OpenGL散射照明
- C++ morris inorder二叉树中序遍历(附完整源码)
- QT的QParameter类的使用
- QML基础类型之geopolygon
- 基于plc计算机控制系统,基于PLC的工业控制系统特点的分析
- B03_NumPy创建数组(numpy.empty,numpy.zeros,numpy.ones)
- Python基础,基本类型(整型,浮点数等)数据结构(List,dic(Map),Set,Tuple),控制语句(if,for,while,continue or break):来自学习资料
- 获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上