Получение папки на основе пути к ней
В этом примере используется путь к папке для получения связанной папки.
Пример
Примечание.
Приведенный ниже пример кода взят из книги Programming Applications for Microsoft Office Outlook 2007 ("Программирование приложений для Microsoft Office Outlook 2007").
В следующем примере кода метод GetKeyContacts использует свойство GetRootFolder() для получения пути к папке Contacts\Key Contacts. Затем вызывается метод GetFolder с использованием свойства FolderPath в качестве аргумента. Если GetFolder возвращает папку, появляется сообщение о том, что папка Key Contacts найдена. Метод GetFolder получает путь к папке и возвращает правильный объект Folder. Для этого свойство FolderPath сначала разбивается на массив из элементов string, который затем используется для поиска правильного объекта Folder, начиная с верхнего компонента свойства FolderPath. Если заданная папка не найдена, GetFolder возвращает пустую ссылку (NULL).
Если вы используете Visual Studio для тестирования этого примера кода, сначала добавьте ссылку на компонент Microsoft Outlook 15.0 Object Library и задайте переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция using не должна находиться непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующей строке кода показано, как выполнить импорт и назначение в C#.
using Outlook = Microsoft.Office.Interop.Outlook;
private void GetKeyContacts()
{
string folderPath =
Application.Session.
DefaultStore.GetRootFolder().FolderPath
+ @"\Contacts\Key Contacts";
Outlook.Folder folder = GetFolder(folderPath);
if (folder != null)
{
//Work with folder here
Debug.WriteLine("Found Key Contacts");
}
}
// Returns Folder object based on folder path
private Outlook.Folder GetFolder(string folderPath)
{
Outlook.Folder folder;
string backslash = @"\";
try
{
if (folderPath.StartsWith(@"\\"))
{
folderPath = folderPath.Remove(0, 2);
}
String[] folders =
folderPath.Split(backslash.ToCharArray());
folder =
Application.Session.Folders[folders[0]]
as Outlook.Folder;
if (folder != null)
{
for (int i = 1; i <= folders.GetUpperBound(0); i++)
{
Outlook.Folders subFolders = folder.Folders;
folder = subFolders[folders[i]]
as Outlook.Folder;
if (folder == null)
{
return null;
}
}
}
return folder;
}
catch { return null; }
}