Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
10.03.2013, 09:56
|
|||
---|---|---|---|
key listener с помощью макроса |
|||
#18+
Всем доброго дня! Небольшая предистория: Необходимо отслеживать нажатие клавиш в контексте ms word. Изначально я работал на С#, писал на нем COM надстройку, но в интернете пишут, что нажатие клавиш отслеживается только макросами либо global keyboard hook - громоздкая конструкция, к тому же отслеживающая все нажатия пользователя в глобальном контексте, то есть если открыт word и юзер параллельно чатится в аське, я буду обрабатывать и нажатие клавиш в аське, а этого мне не надо. Почитав о том, как создавать макросы, нашел кучу примеров, как привязать какой-то код к клавише. Но мне надо привязать код ко всем клавишам, я не хочу один и тот же код привязать вручную на всю клаву. Вообще то, мне нужно в режиме онлайн отслеживать последнее набранное слово - я добавляю такой функционал, как автодополнение. Еще пара вопросов, но пока они не так важны, но если кто-то поможет советом, буду благодарен. Где можно почитать о том, как с помощью макроса выводить контекстное меню в том месте, где стоит курсор (для показа выборов автодополнения) и реально ли при каждом нажатии на клавишу вызывать внешнюю программу - она будет как параметр получать текущее слово и будет в словаре искать подходящие варианты. Почему внешняя программа? Да потому что на visual basic фиг напишеь программу работаю с файлами, особенно с random access файлами. Не бкдет ли вызов внешней проги из макроса очень тяжелой программой, вызывающей зависание на несколько секунд? Предполагается, что внешняя програма будет работать быстро, я боюсь именно за часть вызова и получения данных от внешней проги. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.03.2013, 06:42
|
|||
---|---|---|---|
key listener с помощью макроса |
|||
#18+
Да уж, ни на stackoverflow.com, ни здесь никто не знает про отслеживание клавиш) Может хотя бы про контекстное меню (command bar) на макросе кто-нибудь знает? Я об этом - BaurzhanSГде можно почитать о том, как с помощью макроса выводить контекстное меню в том месте, где стоит курсор (для показа выборов автодополнения) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.03.2013, 07:14
|
|||
---|---|---|---|
key listener с помощью макроса |
|||
#18+
Не думаю, что вы дождётесь каких-либо конкретных советов. Все дело в том, что непонятно соединение инструмента и функционала - зачем именно в Word'е автодополнение? С другой стороны, почему вы считаете, что нужно работать именно с файлами (в ФС), почему на VBA (или VB.NET) не получится сделать быстрый поиск? Вы хотя бы пробовали посмотреть в сторону использования ADO(DB)? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.03.2013, 10:46
|
|||
---|---|---|---|
key listener с помощью макроса |
|||
#18+
AndreTM, автодополнение это не мой каприз, это требование пользователя. С файлами мне надо работать по одной простой причине - если хранить весь словарь слов в оперативке, у меня памяти не хватит, а если в файле хранить, я могу каждый раз читать с файла. На самом деле алгоритм немного хитрее, я его еще в программировании на J2ME применял, когда там памяти не хватало - хранил в файле слова отсортированными, а потом с помощью отдельной программы посчитал, сколько байт нужно прочитать с начала файла, чтобы достичь начала какого-либо слова и записывал это в вспомогательный файл. И в основной программе вместо массива строк, считывал вспомогательный массив short int -ов, что намного экономнее и применял бинарный поиск - только теперь вместо String curWord = words[i]; стало randomAccessFile(skipBytes(preparedBytes[i])); String curWord = randomAccessFile.readLineFromCurrentPosition(); Вообще говоря, бог с ним. с поиском, это не проблема, у меня проблемы с интерфейсом - контекстное меню показать, клавишу отследить. Обидно, что ту часть, где надо думать, я знаю как делать, а какую-то херню не могу сделать из-за бедности предоставляемого программисту функционала. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.03.2013, 14:47
|
|||
---|---|---|---|
key listener с помощью макроса |
|||
#18+
BaurzhanS, То, что вы рассказываете по поводу вашего "файла" - есть поиск/запрос в индексированной таблице БД... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.03.2013, 15:18
|
|||
---|---|---|---|
key listener с помощью макроса |
|||
#18+
AndreTM, я собираюсь после каждого нажатия клавиши искать слова-кандидаты - каждый раз искать в базе - это тяжелая операция, файлом полегче будет. Но это сейчас не суть. Я прошу помощи не в алгоритме поиска, а в отслеживании клавиши и показе контекстного меню. Кажется, на макросе нереально это сделать, придется на шарп возвращаться - global keyboard hook. в этоп топике, в первом сообщении я писал, что global keyboard hook отслеживает все и вся, поэтому он не нужен, но так как он является единственным способом, мне придется научится определять, в контексте какого приложения нажата клавиша. Итого, вывод - мне похер на поиск, есть куча способов это сделать и это не проблема и даже не стоит обсуждения. Мне надо уметь определять, в каком приложении нажата клавиша, "выслеженная" global keyboard hook-ом. Вот это пока проблема. Мне надо выводить контекстное меню типа того, которое ворд выдает, когда предлагает варианты исправления орфографических ошибок, а у меня то де самое - кликаем правой кнопкой мыши на слово - выходит контекстное меню, тока не с исправлениями ошибок, как мы привыкли, а с вариантами автодополнения. Но я уже смирился, что это либо невозможно, либо придется самому кучу экзотической инфы перелопатить, никто не сможет мне помочь, уж больно мало документов на эту тему и совсем нет коммьюнити)) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.03.2013, 22:43
|
|||
---|---|---|---|
key listener с помощью макроса |
|||
#18+
BaurzhanSЯ прошу помощи не в алгоритме поиска, а в отслеживании клавиши и показе контекстного меню. ... у меня то де самое - кликаем правой кнопкой мыши на слово - выходит контекстное меню, тока не с исправлениями ошибок, как мы привыкли, а с вариантами автодополнения.Так всё же что вы отслеживаете - клавиатуру или мышь? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.03.2013, 06:38
|
|||
---|---|---|---|
key listener с помощью макроса |
|||
#18+
AndreTM, и клаватуру - для определения текущего набранного слова и мышь, вернее, отслеживание нажатия правой кнопкой - но это я уже на шарпе сделал. То есть, все что мне надо, я умею делать, осталось только клавиши отслеживать, планирую использовать keyboard hook, а для определения активного приложения попробую использовать GetForegroundWindow, о котором мне сказали здесь . ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=61&mobile=1&tid=2174950]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 165ms |
0 / 0 |