C #: глобальный обработчик событий мыши запускается только один раз - PullRequest
0 голосов
/ 23 сентября 2018

Я использую глобальный обработчик событий мыши, который был первоначально размещен здесь .

Код, опубликованный в оригинальном вопросе, работает отлично, за исключением того, что по какой-то причине, когда я его использую, онсрабатывает только один раз.(После этого он никогда не запускается снова.)

// Subscribe to Event, (placed this in constructor)
MouseHook.Start();  
MouseHook.MouseAction += new EventHandler(Event);

// ...

// This function only gets triggered once
private void Event(object sender, EventArgs e)
{
   // Do something
}

Но, проведя некоторые эксперименты, я все заработал, и теперь он срабатывает при каждом щелчке мыши (а не только по первому).

Я изменил функцию с этого:

private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
    if (nCode >= 0 && MouseMessages.WM_LBUTTONDOWN == (MouseMessages)wParam)
    {
       MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));  
       MouseAction(null,new EventArgs());
    }
    return CallNextHookEx(_hookID, nCode, wParam, lParam);
}

На это:

private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
    if (nCode >= 0 && MouseMessages.WM_LBUTTONDOWN == (MouseMessages)wParam)
    {
       MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));  
       MouseAction(null,new EventArgs());

       // Added these two lines, works perfectly now
       stop();
       Start();
    }
    return CallNextHookEx(_hookID, nCode, wParam, lParam);
}

Но я понятия не имею, почему 1) Мне нужно было добавить эти дополнительные строки длямой код, и 2) похоже, что ни у кого больше нет этой проблемы.

Может кто-нибудь объяснить:

  1. Почему я в первую очередь испытываю эту проблему, и
  2. Допустим ли мой «обходной путь», показанный выше?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...