模拟键盘平时不是很常用, 但是当调用某些快捷键执行某项功能时, 它真的是那么的方便呀.  你不信?  看看下面的实现, 你就会大呼: 为什么不早点告诉我?  呵呵,  原来没有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相关推荐

  1. 如何用应用程序模拟键盘和鼠标按键

    在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输 ...

  2. kinect在openni下也能玩抠出人物换背景

    之前想了个很拉风的名字<用kinect玩穿越>,但是现在功能还不是很完善,细节处理也不是很好,脸皮没有足够的厚,所以呢还是叫换背景吧. 这里面包含两个技术要点: 一.抠出活动人物 在微软的 ...

  3. [玩转编程] C语言+模拟器制作简单脚本

    目录 前言 注意 具体实现 需要工具 实现步骤 寻找模拟键鼠的方法 编写大体脚本 使用记事本查看效果 配置模拟器按键 运行 后记 前言   自己在玩手游时经常会碰到重复的一些系列操作.比如坎公骑的轨道 ...

  4. C++ 实现按键精灵——keybd_event和SendMessage

    C++ 实现按键精灵 文章目录 C++ 实现按键精灵 1.keybd_event 实现 1.1 函数说明 1.2 关于扫描码的补充说明 1.3 示例代码 2.SendMessage 实现 2.1 函数 ...

  5. 使用Python玩赤色要塞 初初初级版

    小时候就喜欢玩手柄机,但是家里条件有限,加上不耽误学习,就没买手柄机,一直想过一把游戏机的瘾,后来又电脑安装了模拟器,玩了很久,后来觉得无聊,偶尔看到国外一个大牛居然用Python玩起来GTA5,受到 ...

  6. 体感游戏 | 手势识别玩飞机大战游戏(三) 使用OpenCV实现手势识别玩飞机大战游戏

    后面将分四篇文章来介绍实现手势识别控制飞机大战游戏的功能,它们分别是: 使用Pygame实现简易飞机大战小游戏 使用Python+OpenCV实现简单手势识别 使用OpenCV实现手势识别玩飞机大战游 ...

  7. 初试linux编译(ubuntu+vim)+玩转智能蛇

    一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...

  8. 一步步玩pcDuino3--mmc下的裸机流水灯

    第一部分是玩pcduino3下的裸机.这个过程能够让我们更好的理解嵌入式系统,熟悉我们使用的这个平台. 首先介绍下开发环境: 虚拟机:VMware® Workstation 10.0.2 build- ...

  9. 玩转Spring Cloud之配置中心(config server config client)

    玩转Spring Cloud之配置中心(config server &config client)  本文内容导航: 一.搭建配置服务中心(config server) 1.1.git方式 1 ...

最新文章

  1. 鸟哥学习笔记---网络安全基础
  2. 理解和使用systrace
  3. Linux 中内核级加强型火墙的管理
  4. 记事本写html怎么加a1图片,记事本-功能待添加
  5. 统计字符串元素出现的个数_LeetCode 1295. 统计位数为偶数的数字
  6. MySQL中select * for update锁表的范围
  7. Android开发注意点小记
  8. 在线搜索音乐播放器源码
  9. Java框架面试题及答案
  10. python中字节(bytes)是如何转换成整型(long)的?
  11. 【吐血整理】一份完备的集成学习手册!(附Python代码)
  12. PyQt5,一个好的qt教程。
  13. c语言输入任意长度字符串,读取不定长字符串输入
  14. 浅析搭建高速公路视频监控平台的建设方案及必要性
  15. DSP_F28335入门(1)——新建工程之gel文件解释
  16. 浅识Flutter 基本组件之TextField组件 输入框decoration属性
  17. 给力回馈!亲~时间有限哦!
  18. 电商api—淘宝店铺商品
  19. 四种常见的 POST-- content-type数据提交方式
  20. LEAP模型应用于工业、交通、建筑、电力、煤炭、炼油、经济、林业等各领域碳排放预测及建模分析

热门文章

  1. C++ 程序运行前内存分区模型
  2. 互联网日报 | 天猫双11今日启动预售;同程艺龙成立酒旅事业群;恒大汽车正式启动科创板上市辅导...
  3. 出现这些迹象,说明你面试可能没戏了
  4. 软件测试nodejs面试题,nodejs单元测试和性能测试
  5. bmp转换tiff c++代码_如何用Java语言将图像转换为PDF?Spire.PDF for Java轻松搞定
  6. 2017中国大数据技术大会12月在京召开
  7. 作者:冯是聪(1973-),男,博士,北京明略软件系统有限公司联合创始人兼CTO。...
  8. 【2016年第3期】中国电信大数据应用实践
  9. 任尔东西南北风(洛谷P2689题题解,Java语言描述)
  10. 笔记:Microservices for Java Developers