使用Sendinput以及GetAsyncKeyState来模拟按键延时
阅读原文时间:2023年07月12日阅读:1

Code:

#include
#include
#include

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,一个用于计时

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器