Lotus Notesで現在開いているドキュメントをC#で取得する方法を見つけようとしていますが、できません。グーグルで半日調べても、役に立つものは何も見つかりませんでした。
私のコードで、必要なビュー、必要なデータベースなどを取得しますが、開いたドキュメントを取得したいだけです。IsUIDocOpenのようなものを試しましたが、完全なコレクションのいずれにもtrueとして含まれていません。
Domino APIを使用して、開いているドキュメントと開いていないドキュメントに違いがあるかどうかを誰かが知っていますか?私の回避策は、電子メールの件名と電子メールのサイズを取得してそれぞれを比較し、一致する場合はエントリIDを取得してから必要な情報を取得することですが、特に受信トレイが大きい場合は時間がかかりすぎます。
助言がありますか?
これが私のコードです:
NotesSession session = new NotesSession();
session.Initialize(sPassword);
notedb = session.GetDatabase(server, filename, false);
if (notedb.IsOpen)
{
mailView = notedb.GetView("$Inbox");
mailDoc = mailView.GetLastDocument();
//mailDoc = mailView.GetDocumentByKey();
try
{
while (mailDoc != null)
{
NotesItem item = mailDoc.GetFirstItem("From");
if (item != null)
{
MessageBox.Show("From = " + item.Text);
}
}
}
}
解決策:次のようにする必要があります: mailDoc = mailView.GetCurrentDocument();
//しかし、明らかにこのメソッドは存在しません:D
================================================== ===================================ソリューションコード:
Type NotesUIWorkspaceType = Type.GetTypeFromProgID("Notes.NotesUIWorkspace", true);
object workspace = Activator.CreateInstance(NotesUIWorkspaceType);
object uiDoc = NotesUIWorkspaceType.InvokeMember("CurrentDocument", BindingFlags.GetProperty, null, workspace, null);
Type NotesUIDocument = uiDoc.GetType();
object Subject = NotesUIDocument.InvokeMember("FieldGetText", BindingFlags.InvokeMethod, null, uiDoc, new Object[] { "Subject" });
string subject = "test";
NotesUIDocument.InvokeMember("FieldSetText", BindingFlags.InvokeMethod, null, uiDoc, new Object[] { "Subject", subject });
object Body = NotesUIDocument.InvokeMember("FieldGetText", BindingFlags.InvokeMethod, null, uiDoc, new Object[] { "Body" });