私は単純なキーリマッパーを作ろうとしています.1つのキーボードキーが押されたときに、コードによって生成された別のキーが押されます。これが私のコードです:
[DllImport("user32.dll")]
static extern uint keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public static void KeyDown(System.Windows.Forms.Keys key)
{
keybd_event((byte)key, 0, 0, 0);
}
public static void KeyUp(System.Windows.Forms.Keys key)
{
keybd_event((byte)key, 0, 0x7F, 0);
}
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0312)
{
int id = m.WParam.ToInt32();
...
if (id==2) {
KeyDown(Keys.Return);
KeyUp(Keys.Return);
}
...
}
base.WndProc(ref m);
}
問題は、ID 2 に割り当てられたホットキーを押すと、このプレス リターン コードが 30 秒に 1 回しか機能しないことです。この keybd_eventd winapi 関数の何が問題になっていますか? 使い方を間違えたのでしょうか?wndProc の他のもの (id) に問題はなく、keybd_event のみに問題があります。