C# 如何在windows服务中获取打印事件?

C# 如何在windows服务中获取打印事件?,c#,windows-services,C#,Windows Services,我正在使用PDF Exchange API获取windows控制台/表单应用程序中的打印事件。但是,当我编写相同的代码来创建服务时,代码与服务不兼容。我正在使用以下代码 PXCComLib5.CPXCControlEx prnFactory = new PXCComLib5.CPXCControlEx(); PDFPrinter = (PXCComLib5.CPXCPrinter)prnFactory.get_Printer("", "Simple PDF-XChange 2012", "<

我正在使用PDF Exchange API获取windows控制台/表单应用程序中的打印事件。但是,当我编写相同的代码来创建服务时,代码与服务不兼容。我正在使用以下代码

PXCComLib5.CPXCControlEx prnFactory = new PXCComLib5.CPXCControlEx();
PDFPrinter = (PXCComLib5.CPXCPrinter)prnFactory.get_Printer("", "Simple PDF-XChange 2012", "<REG CODE>", "<DEV CODE>");
PDFPrinter.Option["Save.ShowSaveDialog"] = false;
PDFPrinter.SetAsDefaultPrinter();

PDFPrinter.OnStartDoc += new PXCComLib5._IPXCPrinterEvents_OnStartDocEventHandler(prn_OnStartDoc);
PDFPrinter.OnFileSaved += new PXCComLib5._IPXCPrinterEvents_OnFileSavedEventHandler(prn_OnFileSaved);
PDFPrinter.OnDocSpooled += new PXCComLib5._IPXCPrinterEvents_OnDocSpooledEventHandler(prn_OnDocSpooled);
PDFPrinter.OnError += new PXCComLib5._IPXCPrinterEvents_OnErrorEventHandler(prn_OnError);
PDFPrinter.OnStartPage += new PXCComLib5._IPXCPrinterEvents_OnStartPageEventHandler(prn_OnStartPage);
PDFPrinter.OnEndPage += new PXCComLib5._IPXCPrinterEvents_OnEndPageEventHandler(prn_OnEndPage);
PDFPrinter.OnEndDoc += new PXCComLib5._IPXCPrinterEvents_OnEndDocEventHandler(prn_OnEndDoc);
void prn_OnStartPage(int JobID, int nPageNumber)
{
     logger.Trace("StartPageEvent called");
}
定义其他方法的方式相同

void prn_OnStartPage(int JobID, int nPageNumber)
{
     logger.Trace("StartPageEvent called");
}
此代码在用作windows控制台/窗体应用程序但不使用windows服务时有效。 此外,在安装服务后,我还尝试了启用桌面交互的选项。
我正在使用Windows7和VisualStudio2010

是否需要进行其他配置?

请不要在问题标题中包含有关所用语言的信息,除非没有它就没有意义。标记用于此目的。射击:您是否尝试为windows服务使用其他主体-本地系统以外的主体?尝试将您自己的用户设置为windows服务的主体。@huhu78我也尝试过,但没有成功。当您的日志程序在windows服务下工作时,您确定它工作吗?也许这与那些事件无关@HU78记录器是由我定义的,我没有为此使用任何库。它很简单,可以将日期和时间附加到文件中。
void prn_OnStartPage(int JobID, int nPageNumber)
{
     logger.Trace("StartPageEvent called");
}