使用Sendinput以及GetAsyncKeyState来模拟按键延时
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来模拟按键延时的更多相关文章
- Android(Linux)模拟按键、触摸屏等事件
前提: 在我们应用程序或者在写Android自己主动化測试时候经常会须要模拟实体按键,来给我们做測试用.这也是我要整理的目的. 基本的涉及的是Linux Input Event事件. 下面的样例基于A ...
- jQueryAjax模拟按键消抖(可设置抖动延迟时间)
在硬件中,按键等都会有抖动现象,如何消除抖动,不重复触发事件呢,这就要用到消抖机制了. 这是我用jQuery模拟硬件消抖原理,额,可能是吧...又不对的地方,希望有高手指点指点. <!DOCTY ...
- Android随笔之——模拟按键操作的几种方式
前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之——使 ...
- delphi 向其他程序发送模拟按键
向其他程序发送模拟按键: 1.用keybd_event: varh : THandle;beginh := FindWindow('TFitForm', '1stOpt - [Untitled1]') ...
- android 模拟按键事件
模拟按键事件可以提高代码的复用性,比如在一个edittext的回车事件里做的一些处理 在该edittext的另一个输入要做相同的处理时,模拟按键事件就非常方便了. 代码很简单,直接上代码: new T ...
- android 实现模拟按键
android 实现模拟按键方法一 通过Runtime实现,代码如下: try { String keyCommand = "input keyevent " + KeyEvent ...
- C#获取窗口,模拟按键操作
C#获取窗口,模拟按键操作,实现计算器模拟操作.首先引用. using System.Runtime.InteropServices; 使用DllImport引入两个函数: // Get a hand ...
- 使用WinAPI全局热键注册和全局模拟按键
一.全局热键注册 1.先引用DLL [System.Runtime.InteropServices.DllImport("user32.dll")] //导入WinAPI publ ...
- Unity 实现模拟按键
一直在想,使用模拟按键,也可以实现一些AI操作,具体还没做过,这里使用user32.dll在unity里写的一个简单demo using UnityEngine; using System.Colle ...
随机推荐
- js单击事件
<script type="text/javascript"> // 根据ID获取元素,得到按钮[注册] var elbtn=document.getElementBy ...
- 零零散散的python笔记
Python strip()方法 用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列. #!/usr/bin/python # -*- coding: UTF-8 -*- str = &qu ...
- 记录解决一个项目中遇到的maven打包问题
拿到同时给的代码,进行打jar包,这个jar包依赖一个第三方的jar包,一开始用IDEA打出来的包,没有把依赖的包打进去,后来查了相关的资料, 发现需要在maven的pom中添加相关的maven插件, ...
- hdoj4812 D Tree(点分治)
题目链接:https://vjudge.net/problem/HDU-4812 题意:给定一颗带点权的树,求是否存在一条路经的上点的权值积取模后等于k,如果存在多组点对,输出字典序最小的. 思路: ...
- hdoj1520(入门树形dp)
题目链接:https://vjudge.net/problem/HDU-1520 题意:和luogu那道没有上司的舞会一样的题,给定一棵带点权的树,父结点和子结点不能同时选,问怎么选使得权值和最大,求 ...
- Spring系列二:IoC 容器
还君明珠双泪垂,恨不相逢未嫁时. 概述 Spring IoC容器是Spring框架的核心.只需要进行简单的容器配置,就可以将创建对象,使用对象,销毁对象联系在一起,从而管理从创建对象到销毁对象的整个生 ...
- mongodb 批量替换内容的语句
// 注意上面的集合要和下面的集合名称相同 db.rand_web_test.find( { 'content': /^.*要替换的字符串.*$/ } ).forEach( function (ite ...
- shell 选择打印部分输出内容
1. 根据进程pid查端口: lsof -i | grep pid 2. 根据端口port查进程(某次面试还考过): lsof -i:port 3. 根据进程pid查端口: netstat -n ...
- Struts2 流程原理
一.流程图 (转) 二.流程详解 1.服务器传递来的请求,通过ActionContextClearUp.other filters.最后到达StrutsPrepareAndExecuteFilter ...
- 富文本二进制转换成string
].KindExplain); ) { explainString = explainString.Substring(, explainString.IndexOf() + , explainStr ...