none
Перехват нажатий клавиш Word в Addin c C# RRS feed

  • Вопрос

  • У меня такая проблема я хочу чтобы после нажатия пробела в Word была выполнена замена текста. я попробовал с помощью API но чо та   во время вызова других функций она тормозит

    Я пишу Addin для  Word на языке С#  который должен заменять текст после нажатия пробела( Заменяется текст который находится перед пробелом). 

    13 марта 2013 г. 12:29

Ответы

  • Привет

    Перехватить нажатие клавиши внутри самого Add-In не получится, у вас остается только 2 вариант - регистрация хука через Windows API (что, возможно вы и пробовали), либо делать это с помощью макроса VBA, а после вызывать ваш Add-in оттуда же из макроса.

    Посмотрите об этом в How to get the “KeyPress” event from a Word 2010 Addin (developed in C#)? 

    И там как раз приведено как сделать через WinAPI


    Для связи [mail]

    • Предложено в качестве ответа LXGDARKEditor 16 марта 2013 г. 7:36
    • Помечено в качестве ответа jamik_j 16 марта 2013 г. 12:55
    15 марта 2013 г. 11:47

Все ответы

  • Привет,

    Единственное что могу Вам предложить, это ознакомиться с данной темой:

    Autocorrect for “fat fingers” - MS Word

    Там показан пример макроса, можно заставить его зпускаться при нажатии пробела

    if (e.KeyCode == Keys.Space)

    Хотя есть минус, что будет пробегать по всему документу.

    А словарь откуда берет Addin ? Сами добавляли или пользуетесь Word'овским?

    Еще вопрос, Вам addin для себя только нужен? Ибо как указанно в ссылке:

    Word auto correction feature will only automatically replace a misspelled word if it's been explicitly been told the correct spelling already i.e if you have already corrected the misspelled word once before. You could instead try a macro to check for misspelled words and replace with the first suggestion.

    На данный AutoCorrect можно сделать бекап файл и импортировать его на другие ПК.


    14 марта 2013 г. 12:03
    Модератор
  • Привет,

    Единственное что могу Вам предложить, это ознакомиться с данной темой:

    Autocorrect for “fat fingers” - MS Word

    Там показан пример макроса, можно заставить его зпускаться при нажатии пробела

    if (e.KeyCode == Keys.Space)

    Хотя есть минус, что будет пробегать по всему документу.

    А словарь откуда берет Addin ? Сами добавляли или пользуетесь Word'овским?

    Еще вопрос, Вам addin для себя только нужен? Ибо как указанно в ссылке:

    Word auto correction feature will only automatically replace a misspelled word if it's been explicitly been told the correct spelling already i.e if you have already corrected the misspelled word once before. You could instead try a macro to check for misspelled words and replace with the first suggestion.

    На данный AutoCorrect можно сделать бекап файл и импортировать его на другие ПК.


    Словарь я делаю сам. Мне просто нужно чтобы мой Addin который я пишу на языке С# срабатывал после нажатия "пробел"- а внутри ворда. Addin я пишу на уровне приложения.
    15 марта 2013 г. 10:40
  • Привет

    Перехватить нажатие клавиши внутри самого Add-In не получится, у вас остается только 2 вариант - регистрация хука через Windows API (что, возможно вы и пробовали), либо делать это с помощью макроса VBA, а после вызывать ваш Add-in оттуда же из макроса.

    Посмотрите об этом в How to get the “KeyPress” event from a Word 2010 Addin (developed in C#)? 

    И там как раз приведено как сделать через WinAPI


    Для связи [mail]

    • Предложено в качестве ответа LXGDARKEditor 16 марта 2013 г. 7:36
    • Помечено в качестве ответа jamik_j 16 марта 2013 г. 12:55
    15 марта 2013 г. 11:47
  • Привет

    Перехватить нажатие клавиши внутри самого Add-In не получится, у вас остается только 2 вариант - регистрация хука через Windows API (что, возможно вы и пробовали), либо делать это с помощью макроса VBA, а после вызывать ваш Add-in оттуда же из макроса.

    Посмотрите об этом в How to get the “KeyPress” event from a Word 2010 Addin (developed in C#)? 

    И там как раз приведено как сделать через WinAPI


    Для связи [mail]

    Спасибо. Вы правы я это пробовал но как не странно этот код не виснет в Word - е так что вы мне очень помогли.
    16 марта 2013 г. 12:55
  • Привет

    Перехватить нажатие клавиши внутри самого Add-In не получится, у вас остается только 2 вариант - регистрация хука через Windows API (что, возможно вы и пробовали), либо делать это с помощью макроса VBA, а после вызывать ваш Add-in оттуда же из макроса.

    Посмотрите об этом в How to get the “KeyPress” event from a Word 2010 Addin (developed in C#)? 

    И там как раз приведено как сделать через WinAPI


    Для связи [mail]

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

    16 марта 2013 г. 12:57
  • Привет

    Перехватить нажатие клавиши внутри самого Add-In не получится, у вас остается только 2 вариант - регистрация хука через Windows API (что, возможно вы и пробовали), либо делать это с помощью макроса VBA, а после вызывать ваш Add-in оттуда же из макроса.

    Посмотрите об этом в How to get the “KeyPress” event from a Word 2010 Addin (developed in C#)? 

    И там как раз приведено как сделать через WinAPI


    Для связи [mail]

    простите а почему когда я нажимаю пробел выводится много  сообщений (MessageBox) и Word тоже выводит ошибку и не только после нажатия пробела
    • Изменено jamik_j 16 марта 2013 г. 14:08
    16 марта 2013 г. 14:07