Я хотел бы использовать библиотеку Python win32com (часть Pywin32) для получения событий от локального интерфейса приложения OneNote (как задокументировано здесь). Примечание Этот вопрос относится не к более новому онлайн-интерфейсу «Rest» OneNote, а скорее к более старому локальному интерфейсу на рабочем столе. < /P>
Когда я пытаюсь использовать этот простой пример: < /p>
import time, pythoncom, win32com.client as COM
class OneNoteEvents:
def OnHierarchyChange(self, PageID=pythoncom.Empty):
print('Hierarchy has changed!!')
onevt = COM.DispatchWithEvents('OneNote.Application', OneNoteEvents)
while True:
pythoncom.PumpWaitingMessages() # Non-blocking
time.sleep(0.02)
< /code>
Я получаю следующую ошибку (некоторые идентифицирующие элементы пути файла отредактированы): < /p>
Traceback (most recent call last):
File "C:\...\OneNote_event_compact.py", line 7, in
onevt = COM.DispatchWithEvents('OneNote.Application', OneNoteEvents)
File "C:\Users\\AppData\Local\Programs\Python\Python313\Lib\site-packages\win32com\client\__init__.py", line 346, in DispatchWithEvents
events_class.__init__(instance, instance)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "C:\Users\\AppData\Local\Temp\gen_py\3.13\0EA692EE-BB50-4E3C-AEF0-356D91732725x0x1x1.py", line 290, in __init__
cookie=cp.Advise(win32com.server.util.wrap(self, usePolicy=EventHandlerPolicy))
pywintypes.com_error: (-2147467259, 'Unspecified error', None, None)
< /code>
Что я знаю до сих пор: < /p>
Ошибка возникает в коде, сгенерированном Win32com в папке 'gen_py', когда вызов () < /strong>. Иерархия и т. Д. < /li>
Я также могу сделать простой пример события для Excel, который также отлично работает, и печатает сообщения, когда курсор перемещается вокруг листа: < /li>
< /ul>
import time, pythoncom, win32com.client as COM
class ExcelEvents:
def OnSheetSelectionChange(self, sh=None, Target=None):
print(f'Selection Changed {sh.Name} {app.ActiveCell.Address}')
app = COM.DispatchWithEvents("Excel.Application", ExcelEvents)
app.Visible=True
while True: pythoncom.PumpWaitingMessages(); time.sleep(0.05)
< /code>
Проблема кажется специфической для интерфейса событий приложения OneNote, что вызывает неудачу в вызове revise () по причинам, которые я не полностью понимаю. Любые подсказки для обхода или подходов к определению причины будут высоко оценены.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ith-python
События интерфейса приложения OneNote Com с Python ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение