Сейчас на сайте

Сейчас 4 гостей онлайн

Поиск

Tag Cloud

Twitter oAuth и Cod... Баллада о г... сихи лирик... стихи лири... Динамическ... Домашняя с... Использова... Использова... Отправка с... Создание ф... Шепот посл... TinyMCE в Rails стихи лири... Быстрая ра... Пишем собс... Создание с... Установка ... Ностальгия... Москва-Бел... стихи лири... Стихи про п... Крылья сти... Создание п... Простой по... Создание п... Одинокий в... Гражданин ... Несчастный... Сонет стих... Отрезок ст... Врагу не сд... Предчувств... Поиск в ст... Использова... Смерть дву... Использова... Как сделат... Как сделат... Облако тег... Южная сере... Программна... Codeigniter в де... CodeIgniter: фор... проверка в... стихи лири... WEB fetcher(scrappe... Простой Twitt... стихи твор... стихи лири... Проверка п... Создание и ... Побег с Сол... Отправка SMS... MS VSTO 2007/Infusio... Установка R... Fckeditor в при... Степные тр... моя любовь. К твоим оз... Сомкнуть л... чтоб отдат... вот – вот ... еще не расс... Снег тишина и лу... и мира пово... что мой пос... Лишь ты. И т... ты любима ты чиста. Экспорт да... Я пью до дн... что нам теп... -Наш первый... Социальные... Социальные... Спит в можж... Воздух про... Стены рожденные ... эхо умрет. Неотправле... стихи лири... Он порезал... Боясь шагн... не осталос... Услышать з... Программир...

Домашняя страница в MS Outlook PDF Печать E-mail
31.05.2011 01:48

Задача в данном случае достаточна тривиальна.  Нужно добавить  в MS Outlook 2007 домашнюю страницу или просто, некий сайт,  появляющуюся при запуске программы. 
Мы сделаем так, чтобы загружалась стартовая страница «Google».  Для этого нам понадобится такие программы:
А. Microsoft  Visual Studio 2005(или более новая версия)
B. Microsoft Office 2007
C. Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System. Это можно легко  скачать с сайта компании.Размер файла чуть больше 6 Мб. Затем нужно установить.
Итак, запускаем  VS Studio и выбираем в меню “New project”.Там находим  “VC#/2007-Add-ins”. Вводим название  проекта, например, “PlugOutlook” и жмем “Ok”.
Далее все шаги будут расписаны пошагово.
.    После создания проекта нужно сразу желательно скомпилировать  его.  Это необходимо для проверки настроек проекта. Если что-то не так, то мы сможем избавиться от ошибок, которые могут появиться  вследствие отсутствия необходимых DLL библиотек.  Мы сможем сразу добавить эти библиотеки и позволит избежать ошибок да и сэкономит нам время на отладку. Если  же появиться окно MS Outlook 2007, значит все в порядке.  Исходный код программы в начале будет  выглядеть так:

using System;
using System.Windows.Forms;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;

namespace PlugOutlook
{
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
}

private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}

#region VSTO generated code

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}

#endregion
}
}
2.    Теперь нам нужно внести в  этот код наши изменения. В класс проекта после строки «public partial class ThisAddIn { » вводим собственный код. Нам необходимо создать объекты и переменные,  которые будут использоваться в последствии. Редактируем код следующим образом:

private string viewName = "Google";// строковая переменаня имени новой папки
private Outlook.MAPIFolder vGoogleView = null;//объект папки
private Outlook.NameSpace _mapiNamespace;//исрользуемое пространство имен
private Outlook.ApplicationClass _app = new  Outlook.ApplicationClass();//объект класса приложения MS Outlook

3.Теперь нужно создать метод, который будет создавать папку внутри  MS  Outlook  и загружать туда страницу сайта. Назовем этот метод « DoGoogleVFolder()» Будет у нас он «void», так как возвращать этому методу ничего не нужно. Исходный код будте таковым:

private void DoGoogleVFolder()
{

Outlook.MAPIFolder inBox = (Outlook.MAPIFolder)_app.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Folders searchFolders = (Outlook.Folders)inBox.Folders;

bool foundView = false;
foreach (Outlook.MAPIFolder searchFolder in searchFolders)
{
if (searchFolder.Name == viewName)
{
vGoogleView = inBox.Folders[viewName];
foundView = true;
}
}
if (!foundView)
{
vGoogleView = (Outlook.MAPIFolder)inBox.Folders.Add("Google", Outlook.OlDefaultFolders.olFolderInbox);
vGoogleView.WebViewURL = "http://www.google.com";
vGoogleView.WebViewOn = true;
vGoogleView = inBox.Folders[viewName];

}
_app.Application.ActiveExplorer().SelectFolder(vGoogleView);
_app.Application.ActiveExplorer().CurrentFolder.Display();
}

Теперь необходимые пояснения. В начален мы создаем объект типа MAPIFolder, чтобы получить доступ к структуре каталогов MS Outlook

Outlook.MAPIFolder inBox = (Outlook.MAPIFolder)_app.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

Затем мы создаем переменную булевого типа для  «foundView» и присваем ей значение  «false».Это нужно, чтобы создать цикл foreach, который будет искать в папках MS Outlook наличие или отсуствие нашей вновь создавамемой папки. Для чего это? Чтобы не создавать снова и снова папку с таким же названием при запуске  Outlook. Если папка не обнаружена,то она создается:

vGoogleView = (Outlook.MAPIFolder)inBox.Folders.Add("Google", Outlook.OlDefaultFolders.olFolderInbox);

Затем мы в качестве свойств вновь созданной папки ставим:

vGoogleView.WebViewURL = "http://www.google.com";
vGoogleView.WebViewOn = true;
vGoogleView = inBox.Folders[viewName];

Первое задает URL сайта, который мы будем показвать в нашей папке.
Второе включает режим его показа,а третье помещает имя папки в каталог MS Outlook.

На конец, мы активируем нашу папку посредством, как бы связывая ее с текущим объектом MS Outlook.

_app.Application.ActiveExplorer().SelectFolder(vGoogleView);
_app.Application.ActiveExplorer().CurrentFolder.Display();

В начале мы делаем активной при запуске нашу папку, а затем она отображается.
Компилируем, все проходит удачно, но никакой папки мы не видим. И это естественно.

4.     Потому что нам надо вызвать наш метод, а пока что он у нас существует как бы вне зоны действия приложения. Для этого в коде плагина или правильнее сказать, add-onа есть метод  «ThisAddIn_Startup». Он всегда исполняется при запуске программы. Вот внутрь этого метода нужно и поместь наш новый метод « DoGoogleVFolder()»:

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
DoGoogleVFolder();
}


Компилируем и видим что все получилось.  Стартовая страница  появляется внутри нашего MS Outlook.  Далее весь  исходный код этой программы.

using System;
using System.Windows.Forms;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;

namespace PlugOutlook
{
public partial class ThisAddIn
{

private string viewName = "Google";
private Outlook.MAPIFolder vGoogleView = null;
private Outlook.NameSpace _mapiNamespace;
private Outlook.ApplicationClass _app = new Outlook.ApplicationClass();


private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
DoGoogleVFolder();
}

private void DoGoogleVFolder()
{

Outlook.MAPIFolder inBox = (Outlook.MAPIFolder)_app.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Folders searchFolders = (Outlook.Folders)inBox.Folders;

bool foundView = false;
foreach (Outlook.MAPIFolder searchFolder in searchFolders)
{
if (searchFolder.Name == viewName)
{
vGoogleView = inBox.Folders[viewName];
foundView = true;
}
}
if (!foundView)
{
vGoogleView = (Outlook.MAPIFolder)inBox.Folders.Add("Google", Outlook.OlDefaultFolders.olFolderInbox);
vGoogleView.WebViewURL = "http://www.google.com";
vGoogleView.WebViewOn = true;
vGoogleView = inBox.Folders[viewName];

}
_app.Application.ActiveExplorer().SelectFolder(vGoogleView);
_app.Application.ActiveExplorer().CurrentFolder.Display();
}



private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}



/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}


}
}

0
 

Добавить комментарий


Защитный код
Обновить