キー F1 ~ F3 を順番に押すアルゴリズムを書きたいと思います。私のフォームには次のコントロールがあります。
lblF1
textboxF1
lblF2
textboxF2
lblF3
textboxF3
btnStart
textboxF1-textboxF3 には秒単位の時間が入力されます。これは、プログラムがホットキーを押すときです。F1 と F2 のように、プログラムが 2 つのキーを同時に押せないようにすることが重要です。1 秒間に複数のキーを押すことはできません。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++;
}
しかし、多くの場合、キーを押しません (遅すぎる可能性がありますが、省略はできません)。このアルゴリズムの作り方を教えてください。