問題は、グローバル ホットキーの組み合わせ (ctrl + スペース) を押してボタンを 1 秒間押し続けると、プログラムがループして、次のような同じテキストがたくさん表示されることです。
「いくつかのテキスト」「いくつかのテキスト」「いくつかのテキスト」「いくつかのテキスト」「いくつかのテキスト」「いくつかのテキスト」
ユーザーが年をとっていて、キーボードのボタンをすばやく離すことができないとしましょう。プログラムにこのグローバル ホットキー アクションを 1 回実行させるにはどうすればよいですか? (ホットキーがしばらく押されていても)。試し(uint)fsModifiers.Control | (uint)fsModifiers.Norepeat
ましたが効果なし。前もって感謝します!
protected override void WndProc(ref Message keyPressed)
{
if (keyPressed.Msg == 0x0312)
{
System.Threading.Thread.Sleep(300);
System.Windows.Forms.SendKeys.Send("some text");
System.Threading.Thread.Sleep(500);
System.Windows.Forms.SendKeys.Send("{TAB}");
System.Threading.Thread.Sleep(500);
System.Windows.Forms.SendKeys.Send("{TAB}");
System.Threading.Thread.Sleep(500);
System.Windows.Forms.SendKeys.Send("some more text");
MessageBox.Show("DONE", "DONE", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
base.WndProc(ref keyPressed);
}
private void Form1_Load(object sender, EventArgs e)
{
RegisterHotKey(this.Handle, 1, (uint)fsModifiers.Control , (uint)Keys.Space);
}
public enum fsModifiers
{
Alt = 0x0001,
Control = 0x0002,
Shift = 0x0004,
Window = 0x0008,
Norepeat = 0x4000,
}