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 ;
}

最新文章

  1. SVN冲突
  2. 微信扫码支付~官方DEMO的坑~参数不能自定义
  3. C++之STL
  4. npm 打包 electron app 报错问题
  5. excel中单元格计算
  6. ◆ 火狐浏览器去除JS方法:
  7. 驱动笔记 - file_operations
  8. QT5 串口收发实例代码
  9. Windows Latex 中日文字体设置例
  10. Windows系统下八大具有高逼格的DOS命令之一【ping】
  11. left join on/right join on/inner join on/full join on连接
  12. Mysql 反向解析 导致远程访问慢
  13. 原生JS实现随着鼠标滚动到元素位置触发对应css3动画,简单易用滚动监测
  14. linux驱动之中断处理过程C程序部分
  15. C# 通用数据库配置界面,微软原生DLL重整合
  16. jenkins net编译部署 笔记 tips
  17. str.replace()和re.sub()/calendar.month_abbr/re.subn()/upper和lower和capitalize/贪婪匹配和费贪婪匹配/re.S和re.DOTALL 笔记
  18. vue学习六之vuex
  19. 直接通过OptionalAttribute, DefaultParameterValueAttribute定义缺省参数
  20. HDU 1540 Tunnel Warfare

热门文章

  1. Day 21 三元表达式、生成器函数、列表解析
  2. doT.js-doT模板方便快捷的组织页面DOM
  3. React-Native解决ListView 在Android手机上无吸顶效果
  4. BZOJ 3309 莫比乌斯反演
  5. Codeforces 919 B. Perfect Number
  6. Codeforces Gym101606 E.Education (2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017))
  7. 洛谷—— P2117 小Z的矩阵
  8. highcharts中放aqi及6要素,再加上气象5要素的图
  9. JDK1.8日期时间库学习
  10. GCD CoreData 简化CoreData操作(转)