Outlook“在邮件工具栏上另存为html”

时间:2011-03-11 16:00:01

标签: outlook-addin outlook-2007

我工作的医疗公司有一个EMR系统设置,可以保存患者文件的数字副本,以便可以搜索和快速访问。为了能够将电子邮件保存到EMR系统,新的请求已经发布,但它不能很好地显示.msg文件。它确实以.htm的形式显示文件,因此希望我能找到一种方法,以.htm格式将电子邮件保存到特定文件夹,用户只需点击一个按钮。

我应该考虑使用vs 2010制作一个加载项来完成这个简单的任务吗?或者有更好的方法来做到这一点吗?

我已经探索过在过去几天使用命令栏制作一个加载项,但是在将菜单项添加到邮件项目以及丢失事件处理程序或让它们触发很多次时遇到了很多问题,所以我想知道我是不是在咆哮错误的树。

编辑:看看功能区自定义也可能需要升级一些仍在使用2003的用户,但似乎它可能是比未来命令栏更好的选择。

1 个答案:

答案 0 :(得分:0)

功能区栏是我发现的最佳路径,但是我无法找到从头到尾项目的好方法,所以我会在这里做一个小写。

在功能区中添加一个按钮,仅显示包含该按钮图像的现有邮件。

使用VS 2010 新项目Office,选择“Outlook 2007加入”,输入项目名称。 对于新创建的项目,添加一个新项目“Ribbon(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来填充此内容,在Ribbon Callbacks区域添加以下内容

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 Members区域中,在GetCustomUI中更改现有代码

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

在项目中添加一个新类,称之为AxHostConverter,将其添加到顶部

使用System.Windows.Forms;    使用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进行部署,安装非常简单。