Code:
#include <windows.h>
#include <tchar.h>
#include <iostream>
BOOL flag = TRUE;
DWORD WINAPI ThreadProc2(LPVOID lpParameter)
{
INPUT input[2];
ZeroMemory(&input, sizeof(input));
input[0].ki.wVk = input[1].ki.wVk = 0x45;
input[0].type = input[1].type = INPUT_KEYBOARD;
while (true)
{
if (GetAsyncKeyState(VK_NUMPAD0) & 0x8000)
{
flag = TRUE;
SetForegroundWindow(HWND(0x00060A3E)); //HWND is used for testing
input[1].ki.dwFlags = 0;
input[0].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(2, input, sizeof(INPUT));
Sleep(500);
while (flag)
{
input[1].ki.dwFlags = 0;
input[0].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(2, input, sizeof(INPUT));
Sleep(10);
}
}
}
}
DWORD WINAPI ThreadProc1(LPVOID lpParameter)
{
while (true)
{
if (GetAsyncKeyState(VK_NUMPAD0) & 0x8000)
{
Sleep(2000);
flag = FALSE;
}
else if (GetAsyncKeyState(VK_END) & 0x8000)
{
exit(1);
}
}
}
int main()
{
DWORD tid1 = 0;
DWORD tid2 = 0;
HANDLE hThread1 = CreateThread(NULL, 0, ThreadProc1, NULL, 0, &tid1);
HANDLE hThread2 = CreateThread(NULL, 0, ThreadProc2, NULL, 0, &tid2);
getchar();
return 0;
}
使用了两个线程,一个用于重复发送SendInput,一个用于计时