Как перехватить и исправить нажатия клавиш на низком уровне? - PullRequest
3 голосов
/ 24 февраля 2009

Я продолжаю печатать "тэ" вместо "то", что, конечно, раздражает в течение времени, которое требуется мне, чтобы исправить себя.

Очевидный ответ: «Учись печатать, нуб!» или хотя бы печатать медленнее и / или правильнее. Эта ошибка пугающе постоянна, поэтому, похоже, я уже тренировал свою мышечную память для этого паттерна.

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

  • Имеет ли C # доступ к тому уровню ОС, который перехватывает нажатия клавиш в масштабе всей системы?
  • Будут ли у меня проблемы с UAC в Vista?
  • Я заново изобретаю колесо (то есть, есть ли инструменты с открытым исходным кодом, которые я могу изменить или использовать из коробки)?

В DOS такого рода вещи были довольно просты, и можно было создавать программы TSR (Terminate and Stay Resident), которые, например, давали бы вам калькулятор на экране с помощью специального нажатия клавиш. Не говоря уже о многих, многих практических программах шуток, основанных на этой концепции (наберите «M» для монстра!) ...

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

-Adam

Ответы [ 4 ]

4 голосов
/ 24 февраля 2009

В Windows вы можете использовать AutoHotKey. Это позволяет вам создавать небольшие скрипты или макросы для автоматизации и исправления таких вещей, как опечатки.

На лайфхакере было размещено одно использование, которое брало часто набранные слова и исправляло их. Это на http://lifehacker.com/192506/download-of-the-day-universal-autocorrect


ОБНОВЛЕНИЕ За Комментарий: Это свободное программное обеспечение и Windows, насколько я знаю.

Приведенный выше скрипт является лишь примером того, что он может сделать. На AutoHotkeys Site

доступно множество скриптов.
2 голосов
/ 24 февраля 2009

Я предлагаю AutoHotKey. Если вы никогда не использовали его ранее, ознакомьтесь с руководством: http://www.autohotkey.com/docs/Tutorial.htm

Функция, которую вы ищете, называется «горячие строки». http://www.autohotkey.com/docs/Hotstrings.htm

В вашем случае ваш скрипт будет выглядеть примерно так:

::teh::the

Вот и все! Добавьте другие вещи, которые вы хотите исправить в дополнительных строках. Скрипты AutoHotkey могут быть скомпилированы, поэтому вам не нужно устанавливать AutoHotKey на все ваши машины.

Это очень крутая программа. Это основное использование (для создания пользовательских горячих клавиш) камней! Эти сценарии предназначены для всей системы, поэтому вам, вероятно, понадобится создать горячую клавишу, чтобы отключить их!

РЕДАКТИРОВАТЬ: В комментарии было упомянуто, что он на самом деле печатает "тэ" (с пробелом в нем), и я подумал, нужно ли что-то дополнительное для его работы. Я только что проверил это, и он отлично работает. Просто установите autohotkey и создайте файл с расширением .AHK. В этом файле укажите следующую строку

::t eh::the

и сохраните файл. Затем дважды щелкните файл AHK, чтобы загрузить AutoHotKey с вашим сценарием (вы увидите зеленый квадрат на панели задач, чтобы вы знали, что он работает). Должно работать нормально!

0 голосов
/ 25 февраля 2009

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

Не говоря уже о том печальном событии, когда вам нужно написать «тх», и вам мешает чрезмерно усердный «корректор».

0 голосов
/ 24 февраля 2009

Да, вы можете использовать команды pinvoke из C # для перехвата низкоуровневых команд os. Я рекомендую вам взглянуть на http://www.pinvoke.net. Кодирование не простое, но оно работает.

...