我试图弄清楚如何通过C#在Lotus Notes上获取当前打开的文档,但我做不到。即使我在谷歌上研究了半天,我也找不到任何有用的东西。
使用我的代码,我得到了我想要的视图,我想要的数据库,等等,但我只想得到打开的文档。我尝试了像IsUIDocOpen这样的东西,但是没有一个完整的集合包含它。
有人知道通过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" });发布于 2013-03-21 00:46:57
您需要先获取NotesUIWorkspace,然后再使用CurrentDocument属性
NotesUIWorkspace workspace = new NotesUIWorkspace();
NotesUIDocument uidoc = workspace.CurrentDocument();https://stackoverflow.com/questions/15527395
复制相似问题