Skip to main content

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 操作系统

安装

  1. 克隆项目:
git clone https://github.com/111hgx/comobj2py.git
cd comobj2py
  1. 安装依赖:
uv add pywin32

使用方法

  1. 运行接口生成器:
python comobj2py
  1. 输入 COM 对象名称,例如:
  • MindManager.Application - 用于 MindManager
  • Word.Application - 用于 Word
  • 等等
  1. 生成的代码将保存在 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()

注意事项

  1. 确保在运行程序前已安装所需的 COM 对象(如 MindManager)
  2. 某些 COM 对象可能需要管理员权限才能访问
  3. 生成的代码可能需要根据具体使用场景进行调整
  4. 建议在使用前先测试生成的接口是否满足需求

常见问题

  1. Q: 为什么某些属性或方法无法访问?
    A: 这可能是因为 COM 对象的权限限制或接口未完全实现。请检查 COM 对象的文档。

  2. Q: 如何处理 COM 对象的错误?
    A: 使用 try-except 块捕获可能的异常,并检查错误信息。

  3. Q: 生成的代码是否需要修改?
    A: 生成的代码通常可以直接使用,但可能需要根据具体需求进行调整。

贡献

欢迎提交 Issue 和 Pull Request 来帮助改进这个项目。

许可证

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

comobj2py-0.0.3.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

comobj2py-0.0.3-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

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

Hashes for comobj2py-0.0.3.tar.gz
Algorithm Hash digest
SHA256 c591cfd3785fb74701830d0107c0b396e07843407e3fe13fb181763247242a5d
MD5 5b9c4bfd63aff425fe76390882e96fb0
BLAKE2b-256 2b24220726dd5bae044992212c03bd950355d9d3fca7a94872afe63cc94f0774

See more details on using hashes here.

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

Hashes for comobj2py-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 72dcbd732725fb7df584004b764685a548d82452cd6c42a87d5a4840f1389ac4
MD5 b88992818b7428c994cc4de70acc06ee
BLAKE2b-256 f331057b2c3cf2aebe524758e9ba939aa3e5b12e6b0aef3970c5078f49621a5a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page