Python Pywin 和 OneNote COM : OneNote. Application.15 'cannot automate the makepy process'

标签 python winapi com onenote

我在 Win32 上使用 Python 与 OneNote 的 COM 互操作进行交互。

下面是提取笔记本层次结构的最基本代码:

import win32com.client
onObj = win32com.client.gencache.EnsureDispatch('OneNote.Application.12')
result = onObj.GetHierarchy("",win32com.client.constants.hsNotebooks)
print(result)

请注意 OneNote.Application.12,它按我的预期工作。

问题是,当我运行 Makepy 时,我实际上选择了 v15 类型库:

enter image description here

如果我将代码更改为 OneNote.Application.15 或只是 OneNote.Application,则会出现错误:

TypeError: This COM object can not automate the makepy process - please run makepy manually for this object

请问这是为什么?我在跑:

  • Python 3.3.1(64 位)
  • Pywin build 218 (AMD64)
  • 赢得 8 x64
  • Office 2013 x64

最佳答案

检查您的注册表记录,特别是 TypeLib 部分中的 key {0EA692EE-BB50-4E3C-AEF0-356D91732725}:

HKEY_CLASSES_ROOT\TypeLib\{0EA692EE-BB50-4E3C-AEF0-356D91732725}

这种奇怪的行为可能是由于存在无效的子键造成的。此类 key 必须仅包含一个子 key “1.1”,除此之外别无其他。

该类的正确注册表记录应如下所示:

|- {0EA692EE-BB50-4E3C-AEF0-356D91732725}
|     |- 1.1
|         |-0
|         | |- win32
|         |- FLAGDS
|         |- HELPDIR

key “win32”必须指向 OneNote 可执行文件,例如C:\PROGRA~1\MICROS~1\Office15\ONENOTE.EXE\3

关于Python Pywin 和 OneNote COM : OneNote. Application.15 'cannot automate the makepy process',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16287432/

相关文章:

python - websocket.recv() 永远不会在另一个事件循环中返回

python - 如何在 cython 中实现更好的循环速度性能?

python - 如何用零填充字符串?

excel - 强制 COM 服务器保持打开状态

c# - 无法在 C# 中实例化 COM 组件 - 错误 80070002

python - Kivy:GridLayout 内的水平滚动标签

winapi - 在用户空间和内核空间之间共享内存

windows - 在 Go 中调用 SHGetImageList

c++ - 异步过程调用中的 GetLastError 竞争

c# - 在 C# 中实现 DISPID_VALUE 并从 C++ 中调用它