#include <stdio.h>
#include <Windows.h> /*
设置键盘大小写状态
big:为TRUE则切换大写状态,否则切换小写状态
*/
VOID MySetKeyBig(BOOL big = FALSE); /*
模拟键盘按键,支持大小写
str:需要按出的字符串
*/
VOID MyAnalogKey(char *str); int main(void)
{
// 当程序运行1.5s时再执行模拟按键,以便选择需要操作的窗口
Sleep();
MyAnalogKey("Love life,Love BiaoGe.0123456789");
system("pause");
return ;
} VOID MySetKeyBig(BOOL big)
{
// 判断键盘CapsLock键是否开启状态,开启状态则为大写,否则为小写
if (GetKeyState(VK_CAPITAL))
{
// 如果当前键盘状态为大写,要求改小写,则模拟按键CapsLock切换状态
if (!big)
{
keybd_event(VK_CAPITAL, NULL, KEYEVENTF_EXTENDEDKEY | , NULL);
keybd_event(VK_CAPITAL, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);
}
}
else
{
// 如果当前键盘状态为小写,要求改大写,则模拟按键CapsLock切换状态
if (big)
{
keybd_event(VK_CAPITAL, NULL, KEYEVENTF_EXTENDEDKEY | , NULL);
keybd_event(VK_CAPITAL, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);
}
}
} VOID MyAnalogKey(char *str)
{
int iLen = ;
char *tmp = NULL;
INPUT *keys = NULL;
BOOL bOldState = FALSE; // 保存此操作前的键盘状态
bOldState = (BOOL)GetKeyState(VK_CAPITAL);
iLen = lstrlen(str);
tmp = (char *)malloc(iLen);
memmove(tmp, str, iLen);
for (int i = ; i < iLen; i++)
{
// 某些符号非直属键盘按键,这里只过滤转换两个,以后用到其它字符自行添加过滤
if (tmp[i] == ' ')
{
// 产生一个击键消息步骤:按下->抬起
keybd_event(VK_SPACE, NULL, KEYEVENTF_EXTENDEDKEY | , NULL);
keybd_event(VK_SPACE, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);
}
else if (tmp[i] == ',')
{
keybd_event(VK_OEM_COMMA, NULL, KEYEVENTF_EXTENDEDKEY | , NULL);
keybd_event(VK_OEM_COMMA, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);
}
else if (tmp[i] >= 'a' && tmp[i] <= 'z')
{ // 根据字符大小写切换键盘大小写状态
MySetKeyBig();
// keybd_event只识别大写
keybd_event((BYTE)tmp[i]-, NULL, KEYEVENTF_EXTENDEDKEY | , NULL);
keybd_event((BYTE)tmp[i]-, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);
}
else if ((tmp[i] >= 'A' && tmp[i] <= 'Z') || (tmp[i] >= '' && tmp[i] <= ''))
{
MySetKeyBig();
keybd_event((BYTE)tmp[i], NULL, KEYEVENTF_EXTENDEDKEY | , NULL);
keybd_event((BYTE)tmp[i], NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);
}
else
{
keybd_event((BYTE)tmp[i]+, NULL, KEYEVENTF_EXTENDEDKEY | , NULL);
keybd_event((BYTE)tmp[i]+, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);
}
}
// 恢复此操作之前的键盘状态
MySetKeyBig(bOldState);
free(tmp);
}

最新文章

  1. webdriver杀死浏览器和Chromedriver进程
  2. block的语法
  3. Objective-C对象初始化 、 实例方法和参数 、 类方法 、 工厂方法 、 单例模式
  4. Hibernate个人总结
  5. webAPP前端必备知识
  6. 8 fastJson的使用
  7. 原生js写的一个当前年份日期星期和时间的显示
  8. 七、Nginx学习笔记七Nginx的Web缓存服务
  9. margin 如何居中
  10. Capacitor电容
  11. [转]为什么复制构造函数的参数需要加const和引用
  12. Vim 安装、配置及复制粘贴操作
  13. Dalvik源码阅读笔记(一)
  14. 如果指针为空,返回ERROR
  15. 使用git pull与本地文件冲突
  16. MyBatis关联查询,一对一关联查询
  17. node.js模块、包
  18. Android ViewPager里的所有图片设置监听打开同一活动显示不同图片
  19. Python学习之路目录(收藏整理)
  20. python练习笔记——用列表推导式生成二维列表

热门文章

  1. Homebrew 的使用
  2. matlab练习程序(旋转、径向模糊)
  3. show_sql和format_sql
  4. 三大框架之list
  5. 利用SQL Server Management Studio(SSMS)复制数据库
  6. vue + element-ui 制作tab切换(适用于单页切换不同标记显示不同内容)
  7. simple2.py
  8. IntelliJ IDEA 快速搭建 Spring MVC环境
  9. java实现按拼音排序
  10. servlet 与 tomcat版本不匹配的问题