C++随机使用keybd_event次数

C++ use keybd_event a random number of times

本文关键字:event 次数 keybd 随机 C++      更新时间:2023-10-16

我希望我的程序在每个循环中随机执行keybd_event次数

if (KeyDown(0x46))
     {
          srand(time(NULL));
          keybd_event(VK_DOWN,0x28,(rand() % 1) ,rand() % 1);
          Sleep(rand() % 801 + 5);
          keybd_event(VK_DOWN,0x28, KEYEVENTF_KEYUP, 0);
          Sleep(rand() % 101);
          keybd_event(VK_RIGHT, 0x27, (rand() % 1), rand() % 1);
          Sleep(rand() % 801 + 5);
          keybd_event(VK_RIGHT, 0x27, KEYEVENTF_KEYUP, 0);
          Sleep(rand() % 101);
          keybd_event(VK_UP, 0x26, (rand() % 1), rand() % 1);
          Sleep(rand() % 801 + 5);
          keybd_event(VK_UP, 0x26, KEYEVENTF_KEYUP, 0);
          Sleep(rand() % 101);
          keybd_event(VK_LEFT, 0x25, rand() % 1, rand() % 1);
          Sleep(rand() % 801 + 5);
          keybd_event(VK_LEFT, 0x25, KEYEVENTF_KEYUP, 0);
          Sleep(rand() % 101);

例如,我希望当我按 F 时,它会在 1 - 10 次之间随机按下向上、向下、向左、向右箭头键。我想要一个 rand(( % 10 func 在keybd_event前面。我该怎么做?

谢谢。

你的问题对我来说不太清楚。据我了解,您想按"F"键并在 [左、上、右、下] 中随机选择一个键并模拟 1 到 10 次?如果是这种情况,那么代码应如下所示:

srand(time(NULL));
DWORD dwKeys[] = { VK_DOWN, VK_RIGHT, VK_LEFT, VK_TOP };
const DWORD key = rand() % _countof(dwKeys); // Randomly select a key
int times = rand() % 10;
for (int i = 0; i < times; i++)
{
    EmulateKeyPress(key);
}