分類:[C# (Windows)]
2007/03/16(Fri) 23:36:48 編集(投稿者)
自動でキー入力をするツールを作っているのですが、一つ質問させてください。
説明のために簡略化したソースです:
// A
win32api.keybd_event((byte)charA, 0, 0, (UIntPtr)0);
win32api.keybd_event((byte)charA, 0, 2/*KEYEVENTF_KEYUP*/, (UIntPtr)0);
Thread.Sleep(500);
Clipboard.SetDataObject(textBox1.Text);
// Ctrl + V
win32api.keybd_event((byte)Keys.ControlKey, 0, 0, (UIntPtr)0);
win32api.keybd_event((byte)charV, 0, 0, (UIntPtr)0);
win32api.keybd_event((byte)charV, 0, 2/*KEYEVENTF_KEYUP*/, (UIntPtr)0);
win32api.keybd_event((byte)Keys.ControlKey, 0, 2/*KEYEVENTF_KEYUP*/, (UIntPtr)0);
Thread.Sleep(500);
// B
win32api.keybd_event((byte)charB, 0, 0, (UIntPtr)0);
win32api.keybd_event((byte)charB, 0, 2/*KEYEVENTF_KEYUP*/, (UIntPtr)0);
Thread.Sleep(500);
// C
win32api.keybd_event((byte)charC, 0, 0, (UIntPtr)0);
win32api.keybd_event((byte)charC, 0, 2/*KEYEVENTF_KEYUP*/, (UIntPtr)0);
Thread.Sleep(500);
順当に処理されれば、「A → 貼り付け → B → C」が0.5秒間隔で入力されるはずなのですが、
「A →(1.5秒)→ 貼り付け&B&C」と、後半が同時に入力されてしまいます。
これで、
Clipboard.SetDataObject(textBox1.Text);
か、もしくは
// Ctrl + V
の部分のどちらかが無ければ、0.5秒間隔でテンポ良く入力されるのですが、
両方がある状態だとどうもうまくいかないようです。
ひょっとすると初歩的なことなのかもしれませんが、
どうにもお手上げ状態のため、どなたかご教示頂けましたら幸いです。
どうぞよろしくお願い致します。(_ _)