【问题标题】:How do I make a ADUC Propertysheet DLL如何制作 ADUC 属性表 DLL
【发布时间】:2014-08-12 17:36:05
【问题描述】:

我是一名 Web 开发人员,几乎没有 COM 编程背景;我想开发一个属性表,以允许另一个部门通过 ADUC 更改缩略图。

到目前为止,我已经制作了所有脚本来注册 DLL 并将其添加到我用我找到的预编译 DLL 进行测试的 ADUC,所以剩下的就是实际制作 DLL 本身。

通过研究,我发现如果我使用 C++,我需要实现 IShellExtInit 和 IShellPropSheetExt 类;我真的很想知道如何在 C# 中做到这一点,但先学习哪个更容易,然后我可以尝试自己学习其他语言。

谁能指出一些工作代码示例或教程的方向?我发现的只是更多的理论,而且我从以下教程中学到了很多东西,所以这将是一个很大的帮助!

到目前为止,我制作了以下 shell,如果它关闭了,请告诉我,但由于我对 COM 的了解有限,这就是我目前所写的全部内容。

#include "stdafx.h"

#include <ShObjIdl.h>

class PropPage : IShellExtInit, IShellPropSheetExt
{
    /////////////////////////
    //IShellExtInit methods//
    /////////////////////////

    HRESULT Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID)
    {
        return S_OK;
    }

    //////////////////////////////
    //IShellPropSheetExt methods//
    //////////////////////////////

    HRESULT AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
    {
        return S_OK;
    }

    HRESULT ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE pfnReplacePage, LPARAM lParam)
    {
        return S_OK;
    }

    /////////////////
    //Misc. methods//
    /////////////////
};

附:当我有更多内容时,我会将其拆分为 cpp 和标头,但是虽然我不知道自己在做什么,但将其全部包含在 cpp 中会更容易

【问题讨论】:

    标签: c++ com active-directory propertysheet


    【解决方案1】:

    The Complete Idiot's Guide to Writing Shell Extensions - Part V 解释了添加页面,如何将所有内容放在一起并提供参考源代码。

    添加属性页

    如果 Initialize() 返回 S_OK,Explorer 将查询新接口 IShellPropSheetExt。 IShellPropSheetExt 非常简单,只有一种方法需要实现。 [...]

    AddPages() 方法是我们将要实现的方法。 ReplacePage() 只被控制面板小程序中替换页面的扩展使用,所以我们这里不需要实现。 Explorer 调用我们的 AddPages() 函数,让我们将页面添加到 Explorer 设置的属性表中。

    AddPages() 的参数是一个函数指针和一个 LPARAM,这两个参数都仅供 shell 使用。 lpfnAddPageProc 指向 shell 中的一个函数,我们调用它来实际添加页面。 lParam 是一个对 shell 很重要的神秘值。我们不会弄乱它,我们只是将它直接传递回 lpfnAddPageProc 函数。

    【讨论】:

      【解决方案2】:

      平台 SDK 示例中有示例 ADUC 属性页。我不确定它们是否仍然存在于 Windows 7+ SDK 中。您可能需要下载旧的(例如 Windows 2003)SDK 来获取示例。我实际上认为其中一个可能会向您展示如何存储照片。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-08
        • 1970-01-01
        • 2021-03-20
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多