【问题标题】:How to synchronize Python with my MFC program.(I using Pywin32 Lib)如何将 Python 与我的 MFC 程序同步。(我使用 Pywin32 Lib)
【发布时间】:2022-01-04 04:11:17
【问题描述】:

Python 和 C++ 项目正在使用 COM 函数。

当我在Python中执行Dispatch Function(例如:win32com.client.Dispath)时,程序进入了MFC的Initinstance Function。

预期动作:“Dispatch”功能完成后执行“LoadTestSetup”功能 问题:在执行 'Dispatch'Func 时,'LoadTestSetup'Func 被执行

  • 参考:'LoadTestSetup'(COM 函数)和 Dispatch(Initinstance 函数)是同一个线程。

以下是 Python 代码:

from win32api
import win32com.client
Tool = win32com.client.Dispatch("Tool Registry Number")
Tool.LoadTestSetup("D:\\HJ\")

【问题讨论】:

    标签: python operating-system mfc system dispatch


    【解决方案1】:

    “LoadTestSetup”函数执行后,MFC程序进入ExitInstance函数,程序终止。 但是,如果在 MFC 程序的“InitInstance”函数底部添加 AfxMessage(~),则“ExitInstance”不会执行,程序也不会终止。 我不明白为什么它会进入“ExitInstance”功能:(

    【讨论】:

      【解决方案2】:

      通过 COM 访问的常用语法是“Object.Name”,而“Tool Registry Number”没有。直接调用 MFC 应用程序的 InitInstance 成员通常不是一个好主意(如果我理解正确的话),而且无论如何也不可能从 COM 中调用。您需要在您的 MFC 应用程序中创建一个所谓的 COM 服务器,并在其中公开某些端点。

      您的问题中存在许多未知变量,以便能够更具体地回答它,而不是建议您了解更多有关底层架构的信息,例如http://timgolden.me.uk/pywin32-docs/html/com/win32com/HTML/QuickStartClientCom.html 或 COM 基础知识 https://docs.microsoft.com/en-us/windows/win32/com/guide

      当您想调用InitInstance(如果我理解正确的话),我想您真正想要的是从一开始就执行整个 MFC 应用程序。为此,我建议像这样“调用”MFC 应用程序:

      subprocess.run(os.path.join("D:", "HJ", "Tool Registry Number.exe")
      

      这比创建 COM 服务器容易一百倍。

      【讨论】:

        猜你喜欢
        • 2020-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多