在 VSTO 中使用 MailItem.PrintOut 时如何更改打印首选项
How to change print preferences when using MailItem.PrintOut in VSTO
我正在尝试自动打印来自 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
*/
}
任何帮助将不胜感激。
Outlook 无法更改任何打印机设置。最好以 DOC / HTML /RTF 格式导出消息,在 Word 中以编程方式打开文件,然后在那里打印它。
我正在尝试自动打印来自 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
*/
}
任何帮助将不胜感激。
Outlook 无法更改任何打印机设置。最好以 DOC / HTML /RTF 格式导出消息,在 Word 中以编程方式打开文件,然后在那里打印它。