Я пытаюсь выяснить, как получить открытый документ в Lotus Notes через C#, но я не могу. Несмотря на то, что я исследовал пол дня в Google, я не нашел ничего полезного.Получить текущий открытый документ
С моим кодом я получаю представление, которое я хочу, базу данных, которую я хочу, и т. Д., Но я просто хотел бы получить открытый документ. Я пробовал что-то вроде IsUIDocOpen, но ни одна из полной коллекции не содержит его как истинного.
Знает ли кто-нибудь, существует ли какой-либо другой открытый документ и не открытый документ через Domino API? Мое обходное решение заключается в том, чтобы получить тему электронной почты и размер электронной почты, а также сравнить каждый из них, и когда он соответствует, получить идентификатор записи, а затем получить нужную мне информацию, но это занимает слишком много времени, особенно когда почтовый ящик большой.
Любые предложения?
Вот мой код:
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" });
Используете ли вы Domino API или COM-классы Lotus Notes Interop? Если вы используете Domino, он никогда не будет работать: он дает вам доступ к базе данных на вашем сервере Domino, а не программе Lotus Notes. –
Где можно найти классы Lotus Notes Interop COM? Спасибо – peterpeterson
Посмотрите здесь: http://www.ibm.com/developerworks/lotus/library/domino-msnet/index.html. Это для VB.Net, но если я правильно помню, в C# у вас есть доступ к классам-оболочкам в пространстве имен, которые позволяют создавать классы. –