我在Windows窗体中重写WndProc方法并使用SendKeys。
如果布尔值为true,我想发送“ CTRL + N”,如果布尔值为false,我只想发送“ n”。
我的问题在这里,当我发送“ n”时发送无限的“ n”。
有什么办法解决这个问题?
public ShiledMaker()
{
InitializeComponent();
this.KeyPreview = true;
RegisterHotKey(Handle, (int)Keys.N, 0, (int)Keys.N);
}
protected override void WndProc(ref Message xMessage)
{
base.WndProc(ref xMessage);
if (bool value)
SendKeys.Send("n");
else
SendKeys.SendWait("^n");
}
答案 0 :(得分:0)
布尔值被添加到您的类中。如果发送了密钥,则将其更改为true。这样keypress事件仅被调用一次。
class MyClass {
private bool keySent = false;
protected override void WndProc(ref Message xMessage)
{
if (keySent)
return;
base.WndProc(ref xMessage);
if (bool value)
SendKeys.Send("n");
else
SendKeys.SendWait("^n");
keySent = true;
}
}