【问题标题】:Where is IFileOperation implemented (and how can I verify this)?IFileOperation 在哪里实现(以及如何验证这一点)?
【发布时间】:2011-06-27 23:49:30
【问题描述】:

我正在尝试找出在 Windows 7 中实现IFileOperation 的位置。 据我从the MSDN page 了解到,它位于 shell32.dll 中。

所以,我使用 DLL 导出查看器(来自 NirSoft)检查了 shell32.dll 中的所有 COM 对象,而 IFileOperation 不是其中之一。

我在注册表中搜索了 CLSID_FileOperation {3ad05575-8857-4850-9277-11b85bdb8e09},发现(据我所知)它位于 shell32.dll 中。

但是,如果我无法使用 DLL 导出找到 COM 导出,那又如何呢?

【问题讨论】:

    标签: c++ winapi com windows-7


    【解决方案1】:

    DLL 不需要导出任何特殊的东西来实现该接口。注册表告诉操作系统哪个 DLL 实现了接口。当程序调用CoCreateInstance 时,操作系统可以在注册表中查找给定的 CLSID。操作系统然后加载关联的 DLL 并调用其DllGetClassObject 函数以获取IClassFactory 对象。操作系统然后使用该接口来获取实现所请求接口的东西。

    【讨论】:

    • 我是 trying 在 Python 中使用来自 ctypesIFileOperation 来获取 Windows 复制对话框。 DLL 没有被导出是否意味着我不能从 Python 中使用它?
    • @Jay - 您需要将其作为 COM 对象加载
    • 您能否详细说明问题?不知道它是如何完成的..
    • 没有 DLL 被导出。 函数 DLL 导出。您可以像操作系统一样加载 DLL,获取 DllGetClassObject,调用它以获取 IClassFactory,然后使用它来获取您真正想要的接口。不过,这似乎已经由 pythoncom 模块完成了,所以我不知道你为什么不直接使用它。
    • @RobKennedy 我不想携带依赖,它似乎有自己的依赖。如果可能的话,我想知道用 Python 做这件事的“香草”方式
    猜你喜欢
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 2011-07-01
    • 2020-03-19
    • 1970-01-01
    相关资源
    最近更新 更多