Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/1: Рейтинг темы: голосов - 1, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 20.01.2023
Сообщений: 34

COM интеграция с Word: перехват нажатия на клавишу

25.08.2023, 01:12. Показов 1212. Ответов 0

Студворк — интернет-сервис помощи студентам
Пробую сделать скрипт, который по COM интегрируется в Word и вставляет "Hello world!" в документ по нажатию Tab в документе.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import win32com.client
 
# Получение доступа к запущенному экземпляру Word
msword = win32com.client.GetActiveObject("Word.Application")
msword.Visible = True
 
# Функция для добавления пользовательской команды
def add_key_binding():
    msword.ActiveDocument.Application.KeyBindings.Add( 
        KeyCategory=1,
        KeyCode=9,  # Код клавиши Tab
        Command="test_key_bindings"
    )
 
# Функция для очистки пользовательских команд
def clear_key_bindings():
    msword.ActiveDocument.Application.KeyBindings.Key(KeyCode=9).Clear()
 
# Функция, которая будет вызываться по пользовательской команде
def test_key_bindings():
    selection = msword.Selection
    selection.TypeText(Text="Hello, world!")
 
# Добавление пользовательской команды
add_key_binding()
 
# Вызов функции при нажатии клавиши Tab
msword.OnKey("{TAB}", "test_key_bindings")
 
# Очистка пользовательских команд 
clear_key_bindings()
Возникает проблема с переназначением клавиши:

Code
1
2
3
4
5
6
7
8
9
> python.exe .\wordhelloworldontab.py
Traceback (most recent call last):
  File "C:\Users\Admin\OneDrive - Universität Münster\wordhelloworldontab.py", line 25, in <module>
    add_key_binding()
  File "C:\Users\Admin\OneDrive - Universität Münster\wordhelloworldontab.py", line 9, in add_key_binding
    msword.ActiveDocument.Application.KeyBindings.Add(
  File "C:\Users\Admin\AppData\Local\Temp\gen_py\3.9\00020905-0000-0000-C000-000000000046x0x8x7.py", line 12892, in Add
    ret = self._oleobj_.InvokeTypes(101, LCID, 1, (9, 0), ((3, 1), (8, 1), (3, 1), (16396, 17), (16396, 17)),KeyCategory
pywintypes.com_error: (-2147352567, 'Ошибка.', (0, 'Microsoft Word', 'Приложению Word не удалось изменить функцию указанной клавиши.', 'wdmain11.chm', 24826, -2146822942), None)
Для других клавиш, скажем, F12 (KeyCode=123) аналогичная ошибка.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.08.2023, 01:12
Ответы с готовыми решениями:

Скорость нажатия на клавишу
Нужна такая программа, которая будет считать количество нажатий на клавиши клавиатуры в определенном промежутке времени(секунда\5 сеунд и...

Обработчик нажатия на клавишу
Всем доброго времени суток. Как я могу сделать на с/с++ обработчик нажатия на клавишу: если была нажата клавиша НЕ в консоли, то моя...

скрипт нажатия на клавишу
для youtube enchancer нужен js скрипт, который бы эмулировал нажатие нужной мне клавиши

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.08.2023, 01:12
Помогаю со студенческими работами здесь

Анимация трехсекундного нажатия на клавишу в Qt
Нужно реализовать анимацию трехсекундного нажатия на клавишу в следующем коде: #include &lt;QApplication&gt; #include...

Выполнение программы до нажатия на клавишу
Программа должна писать различные цыфры до тех пор, пока пользователь не нажмет на какую либо клавишу. использовать оператор .while do ...

Исправить обработчик события нажатия на клавишу
Всем привет. private void Eventer_Closing(object sender, KeyEventArgs e) { if(e.Key==Key.Escape) { ...

Как определить нажатия на клавишу Enter
Пишу простой калькулятор на VisualStudio (Windows Form), задача состоит в том, чтобы запустить метод result при нажатии на клавишу Enter,...

Как сделать клавишу не реагирующей на нажатия?
Есть следующий фрагмент кода: if (Input.GetKey (KeyCode.E)) Какой командой после этого можно заблокировать клавишу &quot;Е&quot;,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru