keybd_event、SendInput笔记
void keybd_event(BYTE bVk, BYTE bScan, DWORD dwFlags, ULONG_PTR dwExtraInfo);
bVk:虚拟键码
bScan:键的硬件扫描码,一般置为0
dwFlags:一般为0或KEYEVENTF_KEYUP,置为0表示键按下
dwExtraInfo:与按键关联的附加值,一般为0
这个函数已被取代。建议使用SendInput替代它
示例
#include <Windows.h>
int main()
{
Sleep();
keybd_event(VK_CONTROL, , , ); //按下Control
keybd_event('A', , , ); //按下A
keybd_event('A', , KEYEVENTF_KEYUP, ); //释放A
keybd_event('X', , , ); //按下X
keybd_event('X', , KEYEVENTF_KEYUP, ); //释放X
keybd_event(VK_CONTROL, , KEYEVENTF_KEYUP, ); //释放Control
return ;
}
UINT SendInput(UINT cInputs, LPINPUT pInputs, int cbSize);
cInputs:pInputs数组中结构的数量
pInputs:INPUT结构的数组。每个结构代表一个要被插入键盘或鼠标输入流的事件
cbSize:一个INPUT结构的大小,以字节为单位
示例
#include <Windows.h>
int main()
{
Sleep();
INPUT inputs[] =
{
{ INPUT_KEYBOARD, {.ki = { VK_CONTROL, , , , } } }, //按下Control
{ INPUT_KEYBOARD, {.ki = { 'A', , , , } } }, //按下A
{ INPUT_KEYBOARD, {.ki = { 'A', , KEYEVENTF_KEYUP, , } } }, //释放A
{ INPUT_KEYBOARD, {.ki = { 'X', , , , } } }, //按下X
{ INPUT_KEYBOARD, {.ki = { 'X', , KEYEVENTF_KEYUP, , } } }, //释放X
{ INPUT_KEYBOARD, {.ki = { VK_CONTROL, , KEYEVENTF_KEYUP, , } } } //释放Control
};
SendInput(sizeof inputs / sizeof(INPUT), inputs, sizeof(INPUT));
return ;
}
注意:在这个示例中,对数组inputs的初始化,采用的是C语言的风格,C++不支持这样的语法
在C++中,可以这么写
#include <Windows.h>
int main()
{
Sleep();
INPUT inputs[];
inputs[].type = INPUT_KEYBOARD;
inputs[].ki = { VK_CONTROL, , , , }; //按下Control
inputs[].type = INPUT_KEYBOARD;
inputs[].ki = { 'A', , , , }; //按下A
inputs[].type = INPUT_KEYBOARD;
inputs[].ki = { 'A', , KEYEVENTF_KEYUP, , }; //释放A
inputs[].type = INPUT_KEYBOARD;
inputs[].ki = { 'X', , , , }; //按下X
inputs[].type = INPUT_KEYBOARD;
inputs[].ki = { 'X', , KEYEVENTF_KEYUP, , }; //释放X
inputs[].type = INPUT_KEYBOARD;
inputs[].ki = { VK_CONTROL, , KEYEVENTF_KEYUP, , }; //释放Control
SendInput(sizeof inputs / sizeof(INPUT), inputs, sizeof(INPUT));
return ;
}
keybd_event、SendInput笔记的更多相关文章
- keybd_event 被 SendInput 替代
keybd_event 函数功能:该函数合成一次击键事件.系统可使用这种合成的击键事件来产生WM_KEYUP或WM_KEYDOWN消息,键盘驱动程序的中断处理程序调用keybd_event函数.在 ...
- VB调用sendinput API
http://files.cnblogs.com/files/liuzhaoyzz/VB%E8%B0%83%E7%94%A8sendinput_API.rar sendinput只支持发送字符或者组合 ...
- keybd_event 转载
转自 http://apps.hi.baidu.com/share/detail/14468670 Option Explicit Private Declare Sub keybd_event Li ...
- keybd_event 对应表
Option Explicit Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bSc ...
- python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题
笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...
- 在VC中使用SendInput函数实现中文的自动输入
很早以前写了一个刷卡程序,功能是定时监控读卡器,当发现有IC卡放到读卡器上后,自动识别出卡号,然后带着这个卡号搜索一个英文用户名和卡号的对照表,最后把英文用户名直接自动输入到当前光标所在的位置.本来程 ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
随机推荐
- .Net Core中的配置文件源码解析
一.配置简述 之前在.Net Framework平台开发时,一般配置文件都是xml格式的Web.config,而需要配置其他格式的文件就需要自己去读取内容,加载配置了..而Net Core支持从命令行 ...
- error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools":解决方案
我是在安装scrapy时遇到这个问题的,安装其他组件也可能会遇到.但问题解决办法都是大致相同的. 以安装scrapy为例: 在pycharm中安装twisted时出现: error: Microsof ...
- ssm实现查看流程图
jsp <!--显示数据列表--> <tbody id="TableData" class="dataContainer" datakey=& ...
- iOS -- app全局字体设置
方法一: 写一个UILabel(FontExtension)扩展重写initWithFrame(手写代码必走方法)和awakeFromNib(xib必走方法)当然UIButton.UITextView ...
- C# PropertyGrid控件应用心得 【转】
源文 : http://blog.csdn.net/luyifeiniu/article/details/5426960 c#stringattributesobjectmicrosoftclass ...
- class文件无论是32位还是64位jdk编译出来的,都可以通用
class文件无论是32位还是64位jdk编译出来的,都可以通用 学习了:https://blog.csdn.net/z3111001358/article/details/53364066 java ...
- vue-class-component 以class的模式写vue组件
vue英文官网推荐了一个叫vue-class-component的包,可以以class的模式写vue组件.vue-class-component(以下简称Component)带来了很多便利: 1.me ...
- 零基础学python-3.7 还有一个程序 python读写文本
今天我们引入另外一个程序,文件的读写 我们先把简单的程序代码贴上.然后通过我们多次的改进.希望最后可以变成一个简单的文本编辑器 以下是我们最简单的代码: 'crudfile--读写文件' def re ...
- JavaScript 内存机制
简介 每种编程语言都有它的内存管理机制,比如简单的C有低级的内存管理基元,像malloc(),free().同样我们在学习JavaScript的时候,很有必要了解JavaScript的内存管理机制. ...
- 【Sprint3冲刺之前】TDzhushou软件项目测试计划书
TDzhushou软件测试计划文档 文档编号:2014-5-8 产品版本:1.1 产品名称:TDzhushou 文 档 作 者: 解凤娇 日期:2014-5-4 软件测试计划 目录 第一章 ...