Событие KeyPress не запускается при использовании MouseKeyHook

Я начал использовать библиотеку MouseKeyHook пару дней назад, чтобы перехватывать кнопки клавиатуры для приложения, которое мы создаем (приложение использует цифровую клавиатуру в качестве ввода для отправки определенных сообщений через Akka и т. Д.).

Мне удалось заставить его работать довольно быстро с помощью консольного приложения и регистрации всего там, но как только я переместил реализацию в определенный сервис, он перестал работать (событие не запускается).

Вот пример кода:

public class KeypadService : IKeypad
{
    private readonly IKeyboardEvents _keyboardEvents;

    public KeypadService()
    {
        _keyboardEvents = Hook.GlobalEvents();
        _keyboardEvents.KeyPress += GlobalHookKeyPress;
    }

    public void Enable(Action<string> codeEntered)
    {

    }

    public void Disable()
    {
        _keyboardEvents.KeyPress -= GlobalHookKeyPress;
    }

    private static void GlobalHookKeyPress(object sender, KeyPressEventArgs e)
    {
        // Do something
    }
}

KeypadService создается Autofac при запуске приложения (а запускаемое приложение является консольным приложением).

builder.RegisterType<KeypadService>().As<IKeypad>().SingleInstance();

Удар по конструктору и все выполняется внутри конструктора.

Любая подсказка относительно того, почему это не могло быть увольнением? Любая помощь приветствуется!

1 ответ

Я предполагаю, что вы пытаетесь подключить клавиатуру из службы Windows. Если так, то есть проблема.

Краткое объяснение: для правильной работы Windows хуки должны иметь так называемый "интерактивный сеанс". Интерактивный сеанс создается всякий раз, когда пользователь входит в систему. Так как на машине с Windows может быть зарегистрировано более одного пользователя, иногда бывает более одного интерактивного сеанса, иногда нет. Службы работают независимо от интерактивных сеансов, они даже работают, когда никто не вошел в систему.

Смотрите эту ветку для подробного объяснения: Глобальная клавиатура Hook от Windows-службы Windows-службы

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