У меня есть много автоматизации VBA, которая связывает решения Outlook и Word; это хорошо, но время неумолимо ... поэтому я начинаю украшать и расширять это старое решение, оборачивая его C # / VS2017. С помощью обычной Winform я могу выбирать своих пациентов, и из этого действия я делаю много действий, в том числе открываю правильный контакт Outlook; в этом проблема, потому что я не могу найти правильный Магазин; Patient.PST, в зависимости от машины, может быть 1-го, 2-го, 3-го ... В VBA я делаю это:
WhichStoreNameToPointAt="patients"
Set myNamespace = myolApp.GetNamespace("MAPI")
For i = 1 To myNamespace.Stores.Count Step 1
If myNamespace.Stores.item(i).DisplayName = WhichStoreNameToPointAt Then
intOutlookItemStore = i
End if
End If
Set myFolderPatients = myNamespace.Stores.item(intOutlookItemStore).GetDefaultFolder(olFolderContacts)
И он всегда функционирует как брелок.
В C# я перепробовал множество вариантов и не смог указать правильный магазин:
public void OpenPatientContact(string patientName)
{
Outlook.Store whichStore = null;
Outlook.NameSpace nameSpace = OlkApp.Session;
int i = 1;
foreach (Outlook.Folder folder in nameSpace.Folders)
{
bool p = false;
if (whichStoreNameToPointAt == folder.Name)
{
p = true;
whichStore = folder.Store;
//Correct Store selected; I can tell because of this watch:
//whichStore.displayname == whichStoreNameToPointAt
}
i++;
if (p)
break;
}
var contactItemsOlk = whichStore.Session.GetDefaultFolder
(Outlook.OlDefaultFolders.olFolderContacts).Items;
// The problem is below; always the first Store
Outlook.ContactItem contact = (Outlook.ContactItem)contactItemsOlk
.Find(string.Format("[FullName]='{0}'", patientName)); //[1];
if (contact != null)
{
contact.Display(true);
}
else
{
MessageBox.Show("The contact information was not found.");
}
}
К сожалению, он постоянно указывает на один и тот же первый магазин, тот, в котором нет пациентов ... Если я изменю порядок в Магазине, я смогу обойти это и протестировать другие вещи, но, конечно, это не правильный путь.
Любые другие головы / глаза, чтобы увидеть свет?
TIA