玩转keybd_event
模拟键盘平时不是很常用, 但是当调用某些快捷键执行某项功能时, 它真的是那么的方便呀. 你不信? 看看下面的实现, 你就会大呼: 为什么不早点告诉我? 呵呵, 原来没有blog呀, 都靠这些挣分呢.
1) 显示桌面:
很多软件有显示桌面的功能, 并且大家的方法都是遍历窗口, 然后让它们最小化, 其实 win系统给咱们了一个非常方便的WIN键(就是键盘上在CTRL键和ALT键之间的那个带win标志的按键), 利用它, 可以轻松的完成显示桌面的功能.
keybd_event(VK_LWIN, 0, 0 ,0);
keybd_event('M', 0, 0 ,0);
keybd_event('M', 0, KEYEVENTF_KEYUP ,0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
其他的操作也类似, 比如直接显示开始的运行,就把上面的'M'换成'R'即可。
直接
keybd_event(VK_LWIN, 0, 0 ,0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
直接显示“开始”对话框了。
2) 实现快速的全选
很多的时候,比如listctrl实现全选,你可以用listctrl循环设置每一项的状态为选中,多罗索的事情呀。用快捷键试一试CTRL+A,其他的快捷键一样的用法,呵呵,你知道怎么办了吧?
keybd_event(VK_CONTROL, (BYTE)0, 0 ,0);
keybd_event('A',(BYTE)0, 0 ,0); //此处可以用 'A', (BYTE)65, 用'a'不起作用.
keybd_event('A', (BYTE)0, KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL, (BYTE)0, KEYEVENTF_KEYUP,0);
3) 执行某些特殊的键,比如数字键,大小写,下面是数字键的例子
bool bState=true; //true为按下NumLock,false反之
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
(!bState && (keyState[VK_NUMLOCK] & 1)) )
{
// Simulate a key press
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// Simulate a key release
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
4) 你想CTRL+ALT+DELETE三键一起按下,
keybd_event(VK_CONTROL, 0, 0 ,0);
keybd_event(VK_MENU,0, 0 ,0);
keybd_event(VK_DELETE,0, 0 ,0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP ,0);
keybd_event(VK_MENU,0, KEYEVENTF_KEYUP ,0);
keybd_event(VK_DELETE,0, KEYEVENTF_KEYUP ,0);
呵呵,这样不会成功呀,因为这几个键直接是操作系统来截获执行的,而模拟键盘只能发向应用程序,所以这种方法不行的(想显示锁定对话框,用 LockWorkStation();)
5) Window2000/NT/XP已经不提倡用这个函数了,上面的方法只是为了让大家开阔一下思路,怎么替代呢,呵呵,看下面,所以上面的所有代码都可以用这个来完成
//2000下用这个代替 ,包含 "winable.h"
INPUT input[4];
memset(input, 0, sizeof(input));
input[0].type = input[1].type = input[2].type = input[3].type = INPUT_KEYBOARD;
input[0].ki.wVk = input[3].ki.wVk = VK_LWIN;
input[1].ki.wVk = input[2].ki.wVk = 'R';
//接下来释放它,这一点很重要。
input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;
input[0].ki.time = input[1].ki.time = input[2].ki.time = input[3].ki.time = GetTickCount();
SendInput(4, input, sizeof(INPUT));
感觉比那个有点罗索,呵呵。
====================
附WIN键的部分快捷键:
WIN键+D=快速的切到桌面,再次点击返回
WIN键+E=快速打开资源管理器
WIN键+R=“运行”。
WIN键+M=全部视窗最小化。
WIN键+Shift+M=取消全部视窗最小化。
WIN键+F1=Help。
WIN键+F=“寻找”。
WIN键+Ctrl+F=显示“查找电脑”。
WIN键+Tab=切换工作列的程式。
WIN键+Break=显示系统内容。
玩转keybd_event相关推荐
- 如何用应用程序模拟键盘和鼠标按键
在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输 ...
- kinect在openni下也能玩抠出人物换背景
之前想了个很拉风的名字<用kinect玩穿越>,但是现在功能还不是很完善,细节处理也不是很好,脸皮没有足够的厚,所以呢还是叫换背景吧. 这里面包含两个技术要点: 一.抠出活动人物 在微软的 ...
- [玩转编程] C语言+模拟器制作简单脚本
目录 前言 注意 具体实现 需要工具 实现步骤 寻找模拟键鼠的方法 编写大体脚本 使用记事本查看效果 配置模拟器按键 运行 后记 前言 自己在玩手游时经常会碰到重复的一些系列操作.比如坎公骑的轨道 ...
- C++ 实现按键精灵——keybd_event和SendMessage
C++ 实现按键精灵 文章目录 C++ 实现按键精灵 1.keybd_event 实现 1.1 函数说明 1.2 关于扫描码的补充说明 1.3 示例代码 2.SendMessage 实现 2.1 函数 ...
- 使用Python玩赤色要塞 初初初级版
小时候就喜欢玩手柄机,但是家里条件有限,加上不耽误学习,就没买手柄机,一直想过一把游戏机的瘾,后来又电脑安装了模拟器,玩了很久,后来觉得无聊,偶尔看到国外一个大牛居然用Python玩起来GTA5,受到 ...
- 体感游戏 | 手势识别玩飞机大战游戏(三) 使用OpenCV实现手势识别玩飞机大战游戏
后面将分四篇文章来介绍实现手势识别控制飞机大战游戏的功能,它们分别是: 使用Pygame实现简易飞机大战小游戏 使用Python+OpenCV实现简单手势识别 使用OpenCV实现手势识别玩飞机大战游 ...
- 初试linux编译(ubuntu+vim)+玩转智能蛇
一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...
- 一步步玩pcDuino3--mmc下的裸机流水灯
第一部分是玩pcduino3下的裸机.这个过程能够让我们更好的理解嵌入式系统,熟悉我们使用的这个平台. 首先介绍下开发环境: 虚拟机:VMware® Workstation 10.0.2 build- ...
- 玩转Spring Cloud之配置中心(config server config client)
玩转Spring Cloud之配置中心(config server &config client) 本文内容导航: 一.搭建配置服务中心(config server) 1.1.git方式 1 ...
最新文章
- 鸟哥学习笔记---网络安全基础
- 理解和使用systrace
- Linux 中内核级加强型火墙的管理
- 记事本写html怎么加a1图片,记事本-功能待添加
- 统计字符串元素出现的个数_LeetCode 1295. 统计位数为偶数的数字
- MySQL中select * for update锁表的范围
- Android开发注意点小记
- 在线搜索音乐播放器源码
- Java框架面试题及答案
- python中字节(bytes)是如何转换成整型(long)的?
- 【吐血整理】一份完备的集成学习手册!(附Python代码)
- PyQt5,一个好的qt教程。
- c语言输入任意长度字符串,读取不定长字符串输入
- 浅析搭建高速公路视频监控平台的建设方案及必要性
- DSP_F28335入门(1)——新建工程之gel文件解释
- 浅识Flutter 基本组件之TextField组件 输入框decoration属性
- 给力回馈!亲~时间有限哦!
- 电商api—淘宝店铺商品
- 四种常见的 POST-- content-type数据提交方式
- LEAP模型应用于工业、交通、建筑、电力、煤炭、炼油、经济、林业等各领域碳排放预测及建模分析
热门文章
- C++ 程序运行前内存分区模型
- 互联网日报 | 天猫双11今日启动预售;同程艺龙成立酒旅事业群;恒大汽车正式启动科创板上市辅导...
- 出现这些迹象,说明你面试可能没戏了
- 软件测试nodejs面试题,nodejs单元测试和性能测试
- bmp转换tiff c++代码_如何用Java语言将图像转换为PDF?Spire.PDF for Java轻松搞定
- 2017中国大数据技术大会12月在京召开
- 作者:冯是聪(1973-),男,博士,北京明略软件系统有限公司联合创始人兼CTO。...
- 【2016年第3期】中国电信大数据应用实践
- 任尔东西南北风(洛谷P2689题题解,Java语言描述)
- 笔记:Microservices for Java Developers