Code:

#include <windows.h>
#include <tchar.h>
#include <iostream> BOOL flag = TRUE; DWORD WINAPI ThreadProc2(LPVOID lpParameter)
{
INPUT input[];
ZeroMemory(&input, sizeof(input));
input[].ki.wVk = input[].ki.wVk = 0x45;
input[].type = input[].type = INPUT_KEYBOARD;
while (true)
{
if (GetAsyncKeyState(VK_NUMPAD0) & 0x8000)
{
flag = TRUE;
SetForegroundWindow(HWND(0x00060A3E)); //HWND is used for testing
input[].ki.dwFlags = ;
input[].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(, input, sizeof(INPUT));
Sleep();
while (flag)
{
input[].ki.dwFlags = ;
input[].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(, input, sizeof(INPUT));
Sleep();
} }
}
} DWORD WINAPI ThreadProc1(LPVOID lpParameter)
{
while (true)
{
if (GetAsyncKeyState(VK_NUMPAD0) & 0x8000)
{
Sleep();
flag = FALSE; }
else if (GetAsyncKeyState(VK_END) & 0x8000)
{
exit();
}
} } int main()
{
DWORD tid1 = ;
DWORD tid2 = ;
HANDLE hThread1 = CreateThread(NULL, , ThreadProc1, NULL, , &tid1);
HANDLE hThread2 = CreateThread(NULL, , ThreadProc2, NULL, , &tid2); getchar();
return ;
}

使用了两个线程,一个用于重复发送SendInput,一个用于计时

使用Sendinput以及GetAsyncKeyState来模拟按键延时的更多相关文章

  1. Android(Linux)模拟按键、触摸屏等事件

    前提: 在我们应用程序或者在写Android自己主动化測试时候经常会须要模拟实体按键,来给我们做測试用.这也是我要整理的目的. 基本的涉及的是Linux Input Event事件. 下面的样例基于A ...

  2. jQueryAjax模拟按键消抖(可设置抖动延迟时间)

    在硬件中,按键等都会有抖动现象,如何消除抖动,不重复触发事件呢,这就要用到消抖机制了. 这是我用jQuery模拟硬件消抖原理,额,可能是吧...又不对的地方,希望有高手指点指点. <!DOCTY ...

  3. Android随笔之——模拟按键操作的几种方式

    前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之——使 ...

  4. delphi 向其他程序发送模拟按键

    向其他程序发送模拟按键: 1.用keybd_event: varh : THandle;beginh := FindWindow('TFitForm', '1stOpt - [Untitled1]') ...

  5. android 模拟按键事件

    模拟按键事件可以提高代码的复用性,比如在一个edittext的回车事件里做的一些处理 在该edittext的另一个输入要做相同的处理时,模拟按键事件就非常方便了. 代码很简单,直接上代码: new T ...

  6. android 实现模拟按键

    android 实现模拟按键方法一 通过Runtime实现,代码如下: try { String keyCommand = "input keyevent " + KeyEvent ...

  7. C#获取窗口,模拟按键操作

    C#获取窗口,模拟按键操作,实现计算器模拟操作.首先引用. using System.Runtime.InteropServices; 使用DllImport引入两个函数: // Get a hand ...

  8. 使用WinAPI全局热键注册和全局模拟按键

    一.全局热键注册 1.先引用DLL [System.Runtime.InteropServices.DllImport("user32.dll")] //导入WinAPI publ ...

  9. Unity 实现模拟按键

    一直在想,使用模拟按键,也可以实现一些AI操作,具体还没做过,这里使用user32.dll在unity里写的一个简单demo using UnityEngine; using System.Colle ...

随机推荐

  1. Java学习笔记-GUI

    Java也提供图像化编程 图形化 GUI(图形用户界面) GUI Graphical User Interface(图形用户接口) 用图形的方式,来显示计算机操作的界面,这样更方便更直观 CLI Co ...

  2. OpenCV 2.4.8 or OpenCV 2.4.9组件结构全解析

    之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构后,再重点学习自己感兴趣的部分的话,就会有一览众山小的感觉,于是,就决定写出这篇文章,作为启程OpenCV系列博文的第二 ...

  3. superset使用

    部署完成后,就可以登陆superset的web页面: http://192.168.56.105:8088  #默认是8080,在配置文件中可以修改 点database可以选择连接不同的数据源,如My ...

  4. redis 发布订阅、geo、bitmap、hyperloglog

    1.发布订阅 简介 发布订阅类似于广播功能.redis发布订阅包括 发布者.订阅者.Channel 命令 命令 作用 时间复杂度 subscribe channel 订阅一个频道 O(n) unsub ...

  5. Oracle同时插入多条数据

    INSERT ALL INTO 表名(NAME) VALUES ('tony') INTO 表名(NAME) VALUES ('tony2') INTO 表名(NAME) VALUES ('tony3 ...

  6. mysql索引不生效

    公司服务用的mysql,最近在查询时时间很慢,经常会上10多秒,查看了一下查询的执行计划,发现索引没有生效. 存储引擎使用InnoDB. 一开始在主库查询,一直很好奇为什么索引不生效,切换到备库之后, ...

  7. vimdiff、rev命令

    一.vimdiff:可视化比较工具 语法:       vimdiff [选项] file1 file2 [file3 [file4]] gvimdiff 描述       Vimdiff在两个(或三 ...

  8. 使用filebeat给多个logstash传输数据

    1. filebeat.yml filebeat.inputs: - type: log enabled: true paths: - /var/log/messages - /var/log/dme ...

  9. 怎样理解HTMLCollection接口

    和 NodeList 类似, HTMLCollection 也是一个 类数组对象, 和NodeList不同的是, 它是各种 元素节点 的集合, 且不具有 forEach() 方法, 因此如果不转为真正 ...

  10. 7.bash作业控制

    7.作业控制本节讨论作业控制是什么.它怎么工作.以及 Bash 里面怎么使用这些功能7.1 作业控制基础作业控制是指有选择的停止(暂停)并在后来继续(恢复)执行某个进程的能力.通常,用户通过 Bash ...