WPF использует библиотеку mousekeyhook для подсчета кликов - ошибка LoaderLock

Я хочу написать приложение, которое считает количество щелчков мышью в окнах. После некоторых исследований я нашел эту библиотеку: MouseKeyHook Я создал приложение wpf и скопировал код примера:

public partial class MainWindow : Window
{
    private IKeyboardMouseEvents m_GlobalHook;

    public MainWindow()
    {
        InitializeComponent();
        Subscribe();
    }

    public void Subscribe()
    {
        // Note: for the application hook, use the Hook.AppEvents() instead
        m_GlobalHook = Hook.GlobalEvents();

        m_GlobalHook.MouseDownExt += GlobalHookMouseDownExt;
        m_GlobalHook.KeyPress += GlobalHookKeyPress;
    }

    private void GlobalHookKeyPress(object sender, KeyPressEventArgs e)
    {
        Console.WriteLine("KeyPress: \t{0}", e.KeyChar);
    }

    private void GlobalHookMouseDownExt(object sender, MouseEventExtArgs e)
    {
        Console.WriteLine("MouseDown: \t{0}; \t System Timestamp: \t{1}", e.Button, e.Timestamp);

        // uncommenting the following line will suppress the middle mouse button click
        // if (e.Buttons == MouseButtons.Middle) { e.Handled = true; }
    }

    public void Unsubscribe()
    {
        m_GlobalHook.MouseDownExt -= GlobalHookMouseDownExt;
        m_GlobalHook.KeyPress -= GlobalHookKeyPress;

        //It is recommened to dispose it
        m_GlobalHook.Dispose();
    }
}

Там нет ошибок или предупреждений, и приложение обнаруживает нажатие клавиш и введенные ключи. Но после нескольких кликов я получаю сообщение об ошибке:

введите описание изображения здесь

Иногда эта ошибка появляется после нескольких щелчков, иногда после 100 щелчков (событие MouseDown - левая кнопка мыши). Также, когда происходит ошибка, мой курсор значительно замедляется на пару секунд.

1 ответ

Попробуйте создать этот объект Hook в другом потоке, чем основной. Эта проблема часто возникает с кодом, который выполняется в DllMain и который блокирует графический интерфейс.

Другие вопросы по тегам