0

Microsoft Outlook アドイン (Visual Studio 2012、C#、COM アドイン、VSTO なし、Outlook 2010/2013/2016) を作成しています。ここで、1) ユーザーは、マップする必要があるさまざまなフィールドを作成および読み取ることができる必要があります。 /メッセージが Microsoft Exchange を出入りするときの MIME ヘッダーから、および 2) フィールドは、Outlook ビューの列として、検索式などで使用されるネイティブの Outlook フィールドとして使用できる必要があります。

1) を取得するために、アドインは PS_INTERNET_HEADERS 名前空間の (MAPI) フィールドを読み書きします。アドインが最初に読み込まれると、Exchange が受信メッセージの MIME ヘッダーと MAPI プロパティ間のマッピングを強制されるようにするダミーの隠しメッセージが作成されます (名前付きプロパティ、X ヘッダー、およびユーザーで説明されている問題に対処します) 。 . それはうまくいきます。

2) を取得するために、次のようなエントリを含む昔ながらの Outlook フォーム構成ファイル (フォーム構成ファイルの作成) を作成しました。

[Property.MMHSFoo]
Type=31
NmidPropset={00020386-0000-0000-C000-000000000046}
NmidString=MMHS-Foo
DisplayName=Foo

次に、Outlook Redemption を使用して、アドインの読み込み時にフォームを登録します。ユーザーはフィールド Foo を他の Outlook フィールドとして使用できるようになりました。

さて、私の問題は、Outlook フォーム デザイナーを使用してフォーム領域を作成するときに、フィールド Foo を追加しようとすると、「操作に失敗しました」というエラーが表示されることです。NmidPropset 値を PS_INTERNET_HEADERS (00020386-0000-0000-C000-000000000046) から PS_PUBLIC_STRINGS (00020329-0000-0000-C000-000000000046) に変更すると、フィールド Foo を追加できますが、1) は機能しません。

したがって、私の質問は次のとおりです。要件 1) と 2) の両方が満たされるように、名前空間 PS_INTERNET_HEADERS から Outlook フォーム領域にフィールドを追加するにはどうすればよいですか?

4

1 に答える 1

0

まず、(1) の場合、メッセージを作成する必要はありません。任意のストア オブジェクト (IMsgStore、IMAPIFolder、IMessage など) で GetIDsFromNames(...MAPI_CREATE) を呼び出すだけです。

(2)に関してはPS_PUBLIC_STRINGS以外ではフォームが動かないと思います。作業ウィンドウを作成し、その内容をコードに明示的に入力してみませんか?

于 2016-03-08T13:56:21.370 に答える