打印pdf文件后获取打印机状态 [英] Get printer status after pdf file is printed

查看:148
本文介绍了打印pdf文件后获取打印机状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我正在编写一个vb.net Windows应用程序,将pdf文件一次发送到打印机,文件打印后,我想从打印机获取已打印"的状态.

到目前为止,我已经有了可以正常工作的代码,可以将所选的pdf发送到打印机.
现在,我正在尝试使用以下代码在文件打印后获取打印机的状态.但是不起作用.

objCollection值被设置为打印机属性评估失败".

如果有人知道该怎么做,请帮助我.

Hi,
I am writing a vb.net windows application to send pdf files to printer, one at time, after file is printed I want to get the status from printer as "Printed".

So far I have the code (working) which can send the selected pdf to printer.
Now I am trying to use this following code to get the status of printer, after the file is printed. but, not working.

The objCollection value is being set to "printer property evaluation failed".

Please help me if anyone knows how to do it.

Imports System.Management 'used namespace

Private objOS As ManagementObjectSearcher
Private objCollection As ManagementObjectCollection
Private objMgmt As ManagementObject

Dim jobName As String
Dim documentName As String
Dim PrinterStatus As String
Dim PrinterStatus1 As String


Dim searchQuery As String
Dim objMgmt As ManagementObject
searchQuery = "SELECT * FROM Win32_PrintJob"
objOS = New ManagementObjectSearcher(searchQuery)
objCollection = objOS.Get()

Try
For Each objMgmt In objCollection
jobName = objMgmt.Properties("Name").Value.ToString()
documentName = objMgmt.Properties("Document").Value.ToString()
PrinterStatus = objMgmt.Properties("Status").Value.ToString()
PrinterStatus1 = objMgmt.Properties("StatusMask").Value.ToString()
If PrinterStatus1 = "128" Then '128 means Printed
Change_Status()'write the status to database as printed
Else
MsgBox("objMgmt: " + documentName + "Status: " + PrinterStatus1, vbExclamation)
End If
Next

Catch ex As Exception
End Try



提前谢谢!
Anita.



Thanks in advance!
Anita.

推荐答案

您需要指定打印机名称以及服务器名称..

我尝试使用下面的代码,它工作正常..
You need to specify Printer Name along with the server name..

I tried using following code and it''s working fine..
Dim printerNAme As String = "\\jayant\\MicrosftXpsPrinter" '\\Server\\PrinterName


其他代码将保持原样..


other code will be as it is..

Dim printerNAme As String = "\\jayant\\MicrosftXpsPrinter"
searchQuery = "SELECT * FROM Win32_Printer WHERE Name LIKE '" & printerNAme & "'"
objOS = New ManagementObjectSearcher(searchQuery)
objCollection = objOS.Get()



浏览此链接,它涵盖了所有与印刷相关的论坛
获取打印机状态 [ ]


希望对您有帮助



Go through this link, it covers all printing related forums
Get Printer Status[]


Hope it helps


您好,
感谢你的回复.

我尝试了以下两种方法,但没有用.

searchQuery ="SELECT * FROM Win32_PrintJob WHERE Name LIKE''"&strPinter&''"

searchQuery ="SELECT * FROM Win32_Printer WHERE Name =''\\ LM103 \\ HPLaserjet4200tn-Claims""

以下查询
searchQuery ="SELECT * FROM Win32_PrintJob"

在我正在使用的Windows7操作系统上工作.
当我将程序部署到XP操作系统时,不起作用.

它将PDF发送到打印机,但未获取状态.

如果有人有想法请写.

谢谢
安妮塔.
Hi,
Thank you for your reply.

I tried both of the following, but doesn''t work.

searchQuery = "SELECT * FROM Win32_PrintJob WHERE Name LIKE ''" & strPinter & "''"

searchQuery = "SELECT * FROM Win32_Printer WHERE Name = ''\\LM103\\HPLaserjet4200tn-Claims''"

The following query
searchQuery = "SELECT * FROM Win32_PrintJob"

works on windows7 operating system which I am working on.
When I deploy the program to XP operating system, doesn''t work.

It sends PDF to printer but doesn''t get the status.

Please write if anyone has ideas.

Thank you,
Anita.


这篇关于打印pdf文件后获取打印机状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆