【解決方法】プロパティ シート ハンドラを使用してカスタム ファイル プロパティを追加したい

プログラミングQA


プロパティ シート ハンドラを使用して、ファイル プロパティにカスタム プロパティを追加しようとしています。 筆記具拡張パーツ V を使用しようとしています。DLL の登録後、余分なプロパティが追加されていません。 現在、Windows 10 OS を使用しています。 他に参考になるサンプルコードがあれば教えてください。

私が試したこと:

DLL の登録後、ファイル プロパティには追加のプロパティ セクションが必要です。

解決策 1

C++ でプロパティ シート ハンドラーを使用してカスタム ファイル プロパティを追加するには、プロパティ シート ハンドラー DLL を作成し、それをオペレーティング システムに登録する必要があります。 これを行う一般的な手順は次のとおりです。

Visual Studio で新しい DLL プロジェクトを作成します。
通常、IShellPropSheetExt または IExtractImage であるプロパティ シート ハンドラー インターフェイスを実装します。 IShellPropSheetExt インターフェイスには、プロパティ ページをファイル プロパティ ダイアログに追加するメソッドが含まれ、IExtractImage インターフェイスには、画像を抽出して表示するメソッドが含まれています。
DLL をコンパイルしてビルドします。
コマンド プロンプトでコマンド「regsvr32 」を実行して、DLL を登録します。
IShellPropSheetExt インターフェイスによって提供されるメソッドを実装して、ファイル プロパティ ダイアログにカスタム プロパティを追加します。
DLL が登録されると、関連するすべてのファイル タイプのファイル プロパティ ダイアログにカスタム プロパティが自動的に追加されます。
ファイル プロパティ ダイアログにカスタム プロパティを追加する C++ プロパティ シート ハンドラ DLL のサンプル コードを次に示します。

// MyPropertySheet.h
#pragma once
#include <shlobj.h>

class CMyPropertySheet : public IShellPropSheetExt
{
public:
    // IUnknown
    virtual HRESULT __stdcall QueryInterface(REFIID riid, void **ppvObject);
    virtual ULONG __stdcall AddRef();
    virtual ULONG __stdcall Release();

    // IShellPropSheetExt
    virtual HRESULT __stdcall AddPages(LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam);
    virtual HRESULT __stdcall ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam);

private:
    ULONG m_cRef;
};

コメント

タイトルとURLをコピーしました