com对象转py调用源码
Project description
MindManager COM Interface Generator
这是一个用于生成 MindManager COM 接口 Python 包装器的工具。该工具可以自动分析 COM 对象的接口,并生成对应的 Python 类,使得在 Python 中操作 MindManager 变得更加简单。
功能特点
- 自动分析 COM 对象的接口和属性
- 生成类型安全的 Python 包装类
- 支持所有 COM 对象的属性和方法
- 自动处理 COM 对象的生命周期
- 提供详细的类型信息和文档字符串
项目结构
mindmanager-pluggin/
├── com_interface.py # COM 接口生成器主程序
├── generated/ # 生成的接口代码目录
│ ├── __init__.py # 包初始化文件
│ └── *.py # 生成的接口类文件
└── README.md # 项目说明文档
环境要求
- Python 3.6+
- pywin32
- Windows 操作系统
安装
- 克隆项目:
git clone https://github.com/111hgx/comobj2py.git
cd comobj2py
- 安装依赖:
uv add pywin32
使用方法
- 运行接口生成器:
python comobj2py
- 输入 COM 对象名称,例如:
MindManager.Application- 用于 MindManagerWord.Application- 用于 Word- 等等
- 生成的代码将保存在
generated目录中
示例代码
使用 MindManager 接口
import win32com.client
import pythoncom
from generated import ActiveDocument, Documents, Options
def print_topic(topic, level=0):
"""递归打印主题及其子主题"""
indent = " " * level
print(f"{indent}主题: {topic.Text}")
# 获取子主题
subtopics = topic.SubTopics
if subtopics:
print(f"{indent}子主题数量: {subtopics.Count}")
for i in range(subtopics.Count):
subtopic = subtopics.Item(i + 1) # COM索引从1开始
print_topic(subtopic, level + 1)
def main():
try:
# 初始化COM
pythoncom.CoInitialize()
# 创建MindManager应用程序实例
app = win32com.client.Dispatch("MindManager.Application")
# 获取活动文档
active_doc = ActiveDocument()
# 获取文档集合
docs = Documents()
# 获取选项
options = Options()
# 打印一些基本信息
print(f"用户名: {options.UserName}")
print(f"用户邮箱: {options.UserEmail}")
print(f"文档数量: {docs.Count}")
# 创建一个新文档
# new_doc = docs.Add()
# new_doc.Activate() # 激活新创建的文档,打开mindmanager窗口
# print(f"已创建新文档")
# 打印当前选项值
print(f"\n当前选项:")
print(f"显示工作簿标签: {options.ShowWorkbookTabs}")
print(f"在工作簿标签中显示文件名: {options.ShowFilenamesInWorkbookTabs}")
# 获取当前打开的文档
doc = ActiveDocument()
if not doc:
print("没有打开的导图文档")
return
print(f"\n当前导图: {doc.Name}")
# 获取中心主题
central_topic = doc.CentralTopic
if central_topic:
print("\n导图结构:")
print_topic(central_topic)
else:
print("未找到中心主题")
print("\n示例运行完成")
except Exception as e:
print(f"发生错误: {str(e)}")
finally:
# 清理COM
pythoncom.CoUninitialize()
# 清理COM对象
try:
app.Quit()
except:
pass
if __name__ == "__main__":
main()
注意事项
- 确保在运行程序前已安装所需的 COM 对象(如 MindManager)
- 某些 COM 对象可能需要管理员权限才能访问
- 生成的代码可能需要根据具体使用场景进行调整
- 建议在使用前先测试生成的接口是否满足需求
常见问题
-
Q: 为什么某些属性或方法无法访问?
A: 这可能是因为 COM 对象的权限限制或接口未完全实现。请检查 COM 对象的文档。 -
Q: 如何处理 COM 对象的错误?
A: 使用 try-except 块捕获可能的异常,并检查错误信息。 -
Q: 生成的代码是否需要修改?
A: 生成的代码通常可以直接使用,但可能需要根据具体需求进行调整。
贡献
欢迎提交 Issue 和 Pull Request 来帮助改进这个项目。
许可证
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file comobj2py-0.0.3.tar.gz.
File metadata
- Download URL: comobj2py-0.0.3.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c591cfd3785fb74701830d0107c0b396e07843407e3fe13fb181763247242a5d
|
|
| MD5 |
5b9c4bfd63aff425fe76390882e96fb0
|
|
| BLAKE2b-256 |
2b24220726dd5bae044992212c03bd950355d9d3fca7a94872afe63cc94f0774
|
File details
Details for the file comobj2py-0.0.3-py3-none-any.whl.
File metadata
- Download URL: comobj2py-0.0.3-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72dcbd732725fb7df584004b764685a548d82452cd6c42a87d5a4840f1389ac4
|
|
| MD5 |
b88992818b7428c994cc4de70acc06ee
|
|
| BLAKE2b-256 |
f331057b2c3cf2aebe524758e9ba939aa3e5b12e6b0aef3970c5078f49621a5a
|