我想编写一个算法来顺序按下 F1-F3 键。我的表单有这些控件:
lblF1
textboxF1
lblF2
textboxF2
lblF3
textboxF3
btnStart
在 textboxF1-textboxF3 中输入以秒为单位的时间。这在程序是按热键的时候。重要的是程序不能同时按下两个键,例如 F1 和 F2。它可能不会在一秒钟内按下一个以上的键。当我单击 btnStart 时,它会调用 Run()。
这就是我试图解决这个问题的方法:
static int counterF1 = 9999;
static int counterF2 = 9999;
static int counterF3 = 9999;
public void Run()
{
counterF1 = 9999;
counterF2 = 9999;
counterF3 = 9999;
while (true)
{
Loop();
}
}
public void Loop()
{
bool used = false;
if (counterF1 >= (int)textboxF1.text)
{
counterF1 = PressKey(VK_F1);
used = true;
}
if (counterF2 >= (int)textboxF2.text)
{
counterF2 = PressKey(VK_F2);
used = true;
}
if (counterF3 >= (int)textboxF3.text)
{
counterF3 = PressKey(VK_F3);
used = true;
}
if (used == false)
{
IncrementCounters();
Delay(1000);
}
}
public double PressKey(uint key)
{
myPostMessageA(hWindow, WM_KEYDOWN, (uint)key, (uint)key);
IncrementCounters();
return 1; //return 1 because one second
}
public void IncrementCounters()
{
counterF1++;
counterF2++;
counterF3++;
}
但通常它不按任何键(可能为时已晚,但不能是遗漏)。你能解释一下如何为此制定算法吗?