【发布时间】:2014-10-03 12:55:20
【问题描述】:
我有一个应该打印出 HTML 文本的 Windows 服务。
操作系统是 7,带有 .NET 4.5.1 和 IE 11。
代码:
private static void PrintOnStaThread(string text)
{
using (WebBrowser webBrowser = new WebBrowser())
{
webBrowser.Navigate("about:blank");
webBrowser.Document.OpenNew(false);
while (webBrowser.DocumentText != text && webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
webBrowser.Document.Write(text);
webBrowser.Refresh();
Application.DoEvents();
}
InternetExplorer internetExplorer = (InternetExplorer)webBrowser.ActiveXInstance;
internetExplorer.ExecWB(OLECMDID.OLECMDID_PRINT, OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, Win32.PRINT_WAITFORCOMPLETION);
}
}
问题:
当使用Local System 帐户记录服务时,ExecWB 函数不执行任何操作,并且线程正在退出而没有任何异常。当使用管理员凭据记录服务时,ExecWB 功能可以完美运行,但我不想使用此帐户。
欢迎任何 cmets。
【问题讨论】:
-
不要在 Windows 服务中使用 WinForms。问题很可能是由它引起的。使用不同的方式打印 HTML。如果必须,请参阅Print html document from Windows Service in C# without print dialog,但仍使用
WebBrowser控件。另请参阅Print html document from Windows Service without print dialog。 -
我已经知道并在我的代码中使用了第一个示例。我真的不明白“不要使用 WinForms”是什么意思。我不认为我是。
标签: c# service credentials printing-web-page