Outlook "сохранить как HTML" на панели инструментов почтового сообщения - PullRequest
0 голосов
/ 11 марта 2011

Медицинская компания, в которой я работаю, имеет систему EMR для хранения цифровых копий файлов пациентов, чтобы они были доступны для поиска и быстрого доступа. Был получен новый запрос на сохранение электронной почты в системе EMR, однако он не очень хорошо отображает MSG-файлы. Он действительно отображает файлы в формате .htm, поэтому надеялся, что смогу найти способ сохранить сообщения электронной почты в определенную папку в формате .htm, когда пользователь нажимает только одну кнопку.

Должен ли я смотреть на создание надстройки с использованием версии 2010 для выполнения этой простой задачи? Или есть лучший способ сделать это?

За последние несколько дней я пытался кратко описать создание надстройки с использованием командных панелей, но столкнулся с многочисленными проблемами с добавлением элемента меню к элементам почты, а также с потерей обработчиков событий или их многократным срабатыванием, так что мне интересно, если я лаю не на том дереве.

Редактировать: Если посмотреть на настройку панели ленты, возможно, придется обновить некоторых пользователей, которые все еще используют 2003, но кажется, что это может быть лучшим вариантом, чем панели команд в будущем.

1 Ответ

0 голосов
/ 16 марта 2011

Лента была лучшим путем, который я нашел, однако у меня были проблемы с поиском отличных практических рекомендаций для проекта от начала до конца, поэтому я сделаю небольшую запись здесь.

Чтобы добавить кнопку на ленту только для существующих почтовых сообщений, включая изображение для кнопки.

Используя VS 2010 Новый проект Office, выберите «Outlook 2007 add in» и введите имя для своегопроект.В ваш недавно созданный проект, добавьте новый элемент «Лента (XML)», назовите его так, как вы хотите, я назову его CustomRibbon, откройте только что созданный файл CustomRibbon.xml и измените узел вкладки, чтобы иметь следующий

  <tab idMso="TabReadMessage">

    <group insertBeforeMso="GroupActions" id="CustomGroup" label="GroupNameThatShowsInOutlook">
      <button id="btnCustomButton"
            label = "Text For The Custom Button"
            supertip="tip for the button hover"
            onAction ="ButtonClicked"
            size="large"
            getImage="GetCustomButtonImage" />

    </group>
  </tab>

Затем он имеет 2 функции обратного вызова для файла CustomRibbon.cs, одна называется GetCustomButtonImage, а другая - ButtonClicked.

откройте CustomRibbon.cs, чтобы заполнить это, в области обратных вызовов ленты добавьте следующее

public void ButtonClicked(Office.IRibbonControl Control)
{
   //Do work here
}

также добавьте следующее в том же разделе

public stdole.IPictureDisp GetCustomButtonImage(Office.IRibbonControl control)
{
   System.Drawing.Image myImage;
   myImage = OutlookAddIn.Properties.Resources.ImageName;
   return AxHostConverter.ImageToPictureDisp(myImage);
}

это покажет, что пропущен класс, мы вскоре к этому вернемся, но сначала мы добавимпоследняя часть нам нужна в CustomRibbon.cs.В области Члены IRibbonExtensibility в GetCustomUI измените существующий код

public string GetCustomUI(string ribbonID)
{
   if (ribbonID == "Microsoft.Outlook.Mail.Read")
   {
      return GetResourceText("OutlookAddIn.CustomRibbon.xml");
   }
   else
   {
      return "";
   }
}

. Добавьте новый класс в свой проект, назовите его AxHostConverter, добавьте его в топ

, используя System.Windows.Forms.;using System.Drawing;

Затем измените класс так, чтобы он имел следующий код

class AxHostConverter : AxHost
{
    private AxHostConverter() : base("") { }

    static public stdole.IPictureDisp ImageToPictureDisp(Image image)
    {
        return (stdole.IPictureDisp)GetIPictureDispFromPicture(image);
    }

    static public Image PictureDispToImage(stdole.IPictureDisp pictureDisp)
    {
        return GetPictureFromIPicture(pictureDisp);
    }
}

Добавьте изображение для вашей кнопки в проект и измените функцию GetCustomButtonImage, чтобы использовать этот ресурс.Я использовал PNG, и мне повезло, что прозрачные пленки хорошо отображались.

И, наконец, все, что нужно оставить, это добавить следующее в ThisAddIn.cs

    protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
    {
        return new CustomRibbon();
    }

Добавить любой код, какой вы естьжелая ButtonClicked, и вы настроены.

Развертывание с использованием Clickonce и установка довольно проста.

...