代码之家  ›  专栏  ›  技术社区  ›  Seb

如何在使用MailItem时更改打印首选项。VSTO中的打印输出

  •  2
  • Seb  · 技术社区  · 7 年前

    我正在尝试自动打印来自VSTO加载项的所有传入电子邮件的第一页。 格式必须保留,所以据我所知,调用MailItem。就实际打印而言,PrintOut()是我唯一的途径。 到目前为止,我就在这里。

    using Outlook = Microsoft.Office.Interop.Outlook;
    /*
    ...
    */
    private void ProcessMailItem(Outlook.MailItem mailItem)
    {
            PrinterSettings ps = new PrinterSettings();
            PrintDialog pd = new PrintDialog();
            pd.AllowSomePages = true;
            pd.AllowSelection = true;
            ps.PrintRange = PrintRange.SomePages;
            ps.FromPage = 1;
            ps.ToPage = 2;
            //ps.MinimumPage = 1;
            //ps.MaximumPage = 2;
            mailItem.PrintOut();
    }
    

    将忽略这些设置,并使用默认设置打印电子邮件。

    我暂时使用的解决方案是发送按键以访问打印首选项,但如果可能的话,我想更改它。

    private void ProcessMailItem(Outlook.MailItem mailItem)
    {
      SendKeys.Send("%f");
      SendKeys.Send("p");
      SendKeys.Send("r");
      /*
      TABing to page selection
      TABing to OK
      */
    }
    

    任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Dmitry Streblechenko    7 年前

    Outlook无法更改任何打印机设置。您最好以DOC/HTML/RTF格式导出消息,在Word中以编程方式打开文件,然后在那里打印。