Библиотека вы имеете в виду подписывается на следующие четыре крючка:
- WH_KEYBOARD_LL
- WH_KEYBOARD
- WH_MOUSE_LL
- WH_MOUSE
При подписке на крючке вы даете система обратного вызова к вашему коду, который будет выполняться в соответствии с правилами, которые отличаются от типа крюка до h ook type. Также информация, которую обратный вызов будет доставлять вам, должна интерпретироваться по-разному. Эти 4 предоставляют информацию о положениях мыши, нажатия клавиш и т. Д.
Существует множество различных типов крючков, на которые вы можете подписаться. См .: Hook Overview
WH_CALLWNDPROCRET
лет относятся к одному из них. Он имеет различное поведение вызова обратного вызова и предоставляет вам все сообщения, отправленные в окно. Они могут включать теоретически любую из сотен возможных сообщений, а не только сообщений клавиатуры и мыши.
Чтобы ответить на ваш вопрос, библиотека globalmousekeyhook
не может подписаться на другие крючки, кроме указанных выше.
Хорошая новость заключается в том, что вы можете, вероятно, повторно использовать код из библиотеки, чтобы реализовать свою собственную подписку.
- Вы можете использовать код для установки крюка.
- Подпись вашего обратного вызова, конечно, будет отличаться.
- Тогда вы получите все сообщения.
- Отфильтруйте только те сообщения, которые вас интересуют, например.
WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP
.
- Интерпретировать данные, доставленные вместе с сообщениями. Также здесь вы можете повторно использовать некоторый код из библиотеки.
Заключение Нет, библиотека не может делать то, что вы ищете. Да, вы, вероятно, можете достичь этого, повторно используя код из этой библиотеки.
Звучит как действительно хакерский способ обойти это. Я уверен, что объектная модель Word вызывает события, которые вам необходимо регистрировать и отвечать, вместо того, чтобы идти по пути от кодового совпадения, и предположить, что некоторые вводные клавиши запускают некоторые действия. Вне отладчиков трудно установить крючок. – IInspectable
@Inspectable: Спасибо за ввод. Я не новичок в разработке Office. Это одна из ключевых (и известных) проблем, которые Word Object Model не вызывает каких-либо событий для KeyPress (лучшее, что мы получаем, это событие WindowSelectionChanged, но это совсем другая история). Крюки кажутся единственным способом для такого рода вещей на сегодняшний день. См., Например, ответ на [этот вопрос SO] (http://stackoverflow.com/questions/13230652/how-to-trap-keypress-event-in-msword-using-vsto). – dotNET