отправить ключи в методе WndProc в C # - PullRequest
0 голосов
/ 20 декабря 2018

Я переопределяю метод WndProc в форме Windows и использую SendKeys.

Я хочу отправить "CTRL + N", когда значение bool равно true, и хочу отправить только "n", если значение bool равно false.

Моя проблема здесь, когда я отправляю «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");
  }

1 Ответ

0 голосов
/ 20 декабря 2018

Логическое значение добавлено в вашем классе.Если ключ отправлен, я изменяю его на 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;

   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...