0

私は COM プログラミングのバックグラウンドがほとんどない Web 開発者です。別の部門が ADUC を介してサムネイル写真を変更できるように、プロパティ シートを作成したいと考えています。

これまでに、DLL を登録して ADUC に追加するスクリプトをすべて作成し、見つけたコンパイル済みの DLL でテストしたので、あとは実際に DLL 自体を作成するだけです。

調査の結果、C++ を使用する場合は IShellExtInit クラスと IShellPropSheetExt クラスを実装する必要があることがわかりました。私は本当にC#でそれを行う方法を知りたいのですが、最初に習得しやすいほうが望ましいでしょう。それから、自分で他の言語を学ぶことができます.

実用的なコード サンプルやチュートリアルの方向性を教えてもらえますか? 私が見つけたのはより多くの理論であり、チュートリアルに従うことでより多くのことを学ぶことができるので、それは大きな助けになるでしょう.

これまでのところ、次のシェルを作成しましたが、それがオフであるかどうかを教えてください。ただし、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//
    /////////////////
};

PSもっとある場合はcppとヘッダーに分割しますが、何をしているのかわかりませんが、すべてをcppに含める方が簡単です

4

2 に答える 2

1

The Complete Idiot's Guide to Writing Shell Extensions - Part V explains adding pages, how to put all together and gives reference source code as well.

Adding Property Pages

If Initialize() returns S_OK, Explorer queries for a new interface, IShellPropSheetExt. IShellPropSheetExt is quite simple, with only one method that requires an implementation. [...]

The AddPages() method is the one we'll implement. ReplacePage() is only used by extensions that replace pages in Control Panel applets, so we do not need to implement it here. Explorer calls our AddPages() function to let us add pages to the property sheet that Explorer sets up.

The parameters to AddPages() are a function pointer and an LPARAM, both of which are used only by the shell. lpfnAddPageProc points to a function inside the shell that we call to actually add the pages. lParam is some mysterious value that's important to the shell. We don't mess with it, we just pass it right back to the lpfnAddPageProc function.

于 2014-08-13T15:21:35.370 に答える