当前位置: 首页 > news >正文

windows实现自动化按键

1.选择目标窗口 获取窗口句柄

void KeyPresser::selectWindow() {SetWinEventHook(EVENT_SYSTEM_FOREGROUND, EVENT_SYSTEM_FOREGROUND, NULL, WinEventProc, 0, 0, WINEVENT_OUTOFCONTEXT);selectedWindowLabel->setText("请点击目标窗口...");
}void CALLBACK KeyPresser::WinEventProc(HWINEVENTHOOK hWinEventHook, DWORD event, HWND hwnd, LONG idObject, LONG idChild, DWORD dwEventThread, DWORD dwmsEventTime) {if (event == EVENT_SYSTEM_FOREGROUND) {wchar_t windowTitle[256];GetWindowText(hwnd, windowTitle, 256);if (KeyPresser::instance) {KeyPresser::instance->targetHwnd = hwnd;KeyPresser::instance->selectedWindowLabel->setText(QString::fromWCharArray(windowTitle));UnhookWinEvent(hWinEventHook);}}
}

2. 向目标窗口发送按键消息


void KeyPresser::pressKeys(int index) {if (targetHwnd) {int key = keyCombos[index]->currentData().toInt();DWORD dwVKFkeyData; // lParam 参数值WORD dwScanCode = MapVirtualKey(key, MAPVK_VK_TO_VSC); // 获取虚拟按键的键盘扫描码dwVKFkeyData = 1;dwVKFkeyData |= dwScanCode << 16;dwVKFkeyData |= 0 << 24;dwVKFkeyData |= 1 << 29;PostMessage(targetHwnd, WM_KEYDOWN, key, dwVKFkeyData);// 重置 dwVKFkeyData 以确保 WM_KEYUP 消息正确dwVKFkeyData = 1;dwVKFkeyData |= dwScanCode << 16;dwVKFkeyData |= 0 << 24;dwVKFkeyData |= 1 << 29;dwVKFkeyData |= 3 << 30;PostMessage(targetHwnd, WM_KEYUP, key, dwVKFkeyData);}
}

3. 成品展示

image.png

简介

  • KeyPresser 是一款免费的自动化按键工具,它可以与窗口交互,并支持后台运行, 无需保持被控窗口在前台运行。用户可以选择要操作的目标窗口,并通过勾选复选框来控制要发送哪些按键消息。可以从组合框中选择所需的按键,并在编辑框中输入时间间隔以控制按键发送之间的延迟。程序提供“开始”和“停止”按钮来启动和终止按键发送过程。

成品下载

https://www.progdomain.com/627/

完整源代码下载

https://download.csdn.net/download/wang161019/89547020

http://www.lryc.cn/news/403780.html

相关文章:

  • 阿里云 https证书部署
  • DX-10A信号继电器 柜内安装,板前接线 约瑟JOSEF
  • 芯片光刻后的晶片多层组合构成的吗
  • OpenGL-ES 学习(7) ---- VBO EBO 和 VAO
  • github如何实现和gitlab的同步
  • 内网隧道——隧道技术基础
  • NAS新品“翻车”后,绿联科技要上市了
  • kafka-client如何打印连接日志
  • 1、springboot3 vue3开发平台-后端-项目构建
  • 修改了mybatis的xml中的sql不重启服务器如何动态加载更新
  • Intel和AMD用户再等等!微软确认Win11 24H2年底前登陆
  • Web开发:图片九宫格与非九宫格动态切换效果(HTML、CSS、JavaScript)
  • 价格较低,功能最强?OpenAI 推出 GPT-4o mini,一个更小、更便宜的人工智能模型
  • 【学习笔记】无人机系统(UAS)的连接、识别和跟踪(八)-无人机探测与避让(DAA)机制
  • 网络结构-组件-AI(九)
  • 弹性网络回归(Elastic Net Regression)
  • 【深度学习】FaceChain-SuDe,免训练,AI换脸
  • Uniapp鸿蒙项目实战
  • 计算机三级嵌入式笔记(一)—— 嵌入式系统概论
  • react Jsx基础概念和本质
  • 【深大计算机系统(2)】实验一 实验环境配置与使用 附常用指令
  • 目标检测经典模型之YOLOV5-detect.py源码解析(持续更新)
  • PF4J+SpringBoot
  • 设计模式11-原型模式
  • Tomcat长连接源码解析
  • C++编程:实现一个跨平台安全的定时器Timer模块
  • PyTorch的自动微分模块【含梯度基本数学原理详解】
  • AI 绘画|Midjourney设计Logo提示词
  • LeNet实验 四分类 与 四分类变为多个二分类
  • 【BUG】已解决:java.lang.reflect.InvocationTargetException