权限检查过了,直接以本地系统的权限运行的。
其中也有模拟提升程序运行权限来运行,可是打印机还是没有反应,就是接受不到打印任务。 回复 11楼sethashan的帖子
我觉得winform打印或windows service打印就差了个GUI界面之外, 执行命令应该没什么区别的, 无非就是给打印机发送打印指令. 您好,
非常抱歉。经过调查,我们发现在windows Service不支持打印的功能。
原因是,windows Service是一个后台进程,不能够支持前台UI的调用。
在打印时,会报错。
System.Drawing.Printing.InvalidPrinterException: 未安装打印机。
在 GrapeCity.ActiveReports.Viewer.Win.Printing.PrintImpl.#kUo(Printer printer, Boolean showPrintDialog)
在 GrapeCity.ActiveReports.Viewer.Win.Printing.PrintImpl.Print(#q0B documentPrintAdapter, Boolean showPrintDialog, Boolean showPrintProgressDialog, Boolean usePrintingThread, Boolean useStandardDialog, Action`1 action)
在 GrapeCity.ActiveReports.PrintExtension.Print(PageDocument pageDocument, Boolean showPrintDialog, Boolean showPrintProgressDialog, Boolean usePrintingThread, Boolean useStandardDialog)
在 GrapeCity.ActiveReports.PrintExtension.Print(PageDocument pageDocument, Boolean showPrintDialog, Boolean showPrintProgressDialog) 回复 13楼frank.zhang的帖子
打印需要调用UI? 这逻辑太奇怪了吧. 而且你那边显示的是未安装打印机错误呀.
即便是后台进程我觉得不应该被前台UI所限制. 希望问问国外的开发人员. 况且这是一个常用的功能. 总不能每台需要打印的电脑都装一个打印机吧. 所以逻辑上也说不过去. 您好,
经过调查,系统在打印时,调用的是System.Drawing.Printing
在System.Drawing这个方法,有这么一句话
https://msdn.microsoft.com/en-us/library/system.drawing.aspx
Classes within the System.Drawing namespace are not supported for use within a Windows or ASP.NET service.
您可以参考下这篇文章
http://blogs.msdn.com/b/dsui_team/archive/2013/06/24/printing-from-a-windows-service.aspx 回复 15楼frank.zhang的帖子
斑竹,您的意思是ActiveReport的 Document.Print(false, false, false)方法实际上是把System.Drawing.Printing这个打印类的打印方法封装了而已? 您好,
System.Drawing.Printing是.net framework所提供的系统方法。从目前的信息,打印时使用了这个方法。 为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062 版主,目前该问题有了新的进展,麻烦跟进一下。
我用的是系统自带的虚拟打印机Microsoft XPS Document Writer,正常运行Windows服务,
日志显示程序一直卡在Document.Print(false, false, false)方法上。
然后我这里做了一个修改如图:(擦 不能上传本地的图,用文字描述了)
就是右击服务-属性-登录选项卡-本地系统账户下有个选项"允许服务与桌面交互",勾选它。
然后再运行服务,这时候任务栏出现一个齿轮图标,点击后弹出一个“交互服务监测”
询问我是否浏览交互信息,点击浏览信息,就会跳到一个虚拟桌面,其中有Microsoft XPS Document Writer打印机特有的
把打印数据保存成XPS文件的对话框。点击保存同时返回本机桌面,发现保存位置多了XPS文件,日志显示打印成功。
这里说明了windows Service虽然是一个后台进程,但是可以支持前台UI的调用,前提是勾选上述所说的允许服务与桌面交互。
但是本人有个疑问:虚拟打印机是否必须交互才能打印 真实打印机是否不需要交互 直接就可以打印 ?
如果我连的是真实打印机,是否不用勾选允许服务与桌面交互选项,直接windows Service就可以进行打印?
(请谅解本人没有真实打印机环境,不能证实这个结论,如果版主有真实打印机条件的话,可能的话帮忙验证下,谢谢!) 您好,
之前尝试的时候,已经勾选了所说的允许服务与桌面交互。验证的结果是不行。
页:
1
[2]