0

Outlook アドインで、ユーザーが MAPI ストアにドラッグ アンド ドロップしたすべてのアイテムに関する情報を取得しようとしています (Redemption ライブラリを使用しています)。

これに対する私の最初の試みは、MessageCreated イベントにフックすることでした...

myRDOStore.OnMessageCreated += new IRDOStoreEvents_OnMessageCreatedEventHandler(myRDOStore_OnMessageCreated);

注意が必要なのは、1 つのコレクションとして同時にドラッグ アンド ドロップされるすべてのアイテムをキャプチャする必要があることです。これは、入ってくる新しいメッセージ (おそらく EntryId) のいくつかの側面を永続化することを意味すると思います。

さて、問題は明らかに、一連の任意のイベントの結果を結び付ける方法がないことです。そのため、ActiveExplorer().Selectionコレクションを調べて、そこからストアドにドラッグ アンド ドロップされたアイテムを特定する方法を考えようとしました。 .

コレクションの内容が少しでたらめに見えたので、あまり運がありませんでした (たとえば、1 つのアイテムをドラッグするSelectionと、イベント ハンドラーでそれを調べると、または一連のイベントがそこで発生したときに、 2 つのアイテムが表示されます)。たとえば、Selection で 2 つのアイテム、次のイベントで 1 つ、次のイベントで 1 つなど)。

それに加えて、私の使用例の 1 つは、Outlook の外部からアイテムをドラッグする機能ですが、これはSelectionコレクションには含まれないと思います。

この問題に対する標準的なアプローチはありますか? かなり一般的なことのように思えます-たくさんのファイルをフォルダーにドラッグし、それらに関する情報をコレクションとして取得できるようにしますが、私にはそれがわかりません. どんなガイダンスも大歓迎です。

4

1 に答える 1

1

調査の結果、ドロップされた電子メールの COM オブジェクトが解放されていないことが問題であることがわかりました。それらを解放する最も簡単な方法は、e.Data.GetData("RenPrivateMessages"); を呼び出すことです。DragDrop イベント ハンドラでドラッグ アンド ドロップ ロジックを終了した後のメソッド。

于 2013-02-05T08:16:04.850 に答える