私は Domino .NET ラッパー クラスを使用して、ユーザーが電子メールを Lotus 受信トレイから winform にドラッグできるようにしています。
ドキュメントへのメモの URL を含むデータ オブジェクトを次の形式で取得しています。
notes://server/replicaID/viewID/documentUNID
そして、一致するドキュメントを返すことになっている Domino.NotesSession.Resolve(pUrl) に渡します。実際、ブラウザにリンクを貼り付けると (notes:// を http:// に置き換えると効果的です。メールの HTML バージョンが表示されます) 動作します。
しかし、Resolve メソッドは、実際のドキュメントではなく、NotesView と思われるものを返し続けます。
Dim notesSession as Domino.NotesSession = ' ... Initialize session here
Dim notesURL as string = "notes://server/replicaID/viewId/documentID"
Dim draggedDocument = notesSession.Resolve(notesURL)
' Here, I do get an actual document, but its UnID matches the viewId
' part of the url, not the document.
URL から viewID を削除しようとしましたが、成功しませんでした。ドキュメントを正常に取得する唯一の方法は、OLE オブジェクト (lotus 名前空間) を使用することです。
' Get UnId from url
Dim unid as String = notesURL.Split("/").Last()
' Get UI Automation object
Dim workspace = CreateObject("Notes.NotesUIWorkspace")
' Get currently open DB (the where the drag event was initiated)
Dim notesDb = workspace.CURRENTDATABASE.Database
' Retrieve matching document
Dim notesDoc = notesDb.GetDocumentByUNID(unid)
この方法は機能しますが、UI オートメーション クラス (OLE) ではなく、Domino の COM ラッパー (.NET) を使用したいと考えています。
では、これらのメモの URL は相互運用でどのように機能するのでしょうか? データベースを直接知らなくても、一致するドキュメントを取得する方法はありますか? ドキュメントの URL を指定すると、Resolve メソッドがビュー オブジェクトを返すのはなぜですか?
どんな助けでも大歓迎です。