繁体   English   中英

在 C# 中的 WndProc 方法中发送密钥

[英]send keys in WndProc method in C#

我在 Windows 窗体中覆盖 WndProc 方法并使用 SendKeys。

当 bool 值为 true 时,我想发送“CTRL + N”,而当 bool 值为 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");
  }

布尔值已添加到您的类中。 如果发送了密钥,我会将其更改为 true。 这样按键事件只被调用一次。

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;

   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM