C# 与打印机交谈

C# 与打印机交谈,c#,printing,C#,Printing,有没有一种方法可以编写一些代码,可以和打印机“对话”,从而获得一些关于打印机状态的基本信息?我真正感兴趣的是找出它是否已经用完了纸或是卡纸了——这类性质的事情。我应该使用系统管理库来管理这类东西吗 PS-知道如何获取在特定PC上设置的所有打印机也很方便。您将如何操作?使用系统从打印机获取信息。管理相对简单 //Declare WMI Variables ManagementObject MgmtObject; ManagementObjectCollection Mgmt

有没有一种方法可以编写一些代码,可以和打印机“对话”,从而获得一些关于打印机状态的基本信息?我真正感兴趣的是找出它是否已经用完了纸或是卡纸了——这类性质的事情。我应该使用系统管理库来管理这类东西吗


PS-知道如何获取在特定PC上设置的所有打印机也很方便。您将如何操作?

使用系统从打印机获取信息。管理相对简单

    //Declare WMI Variables
    ManagementObject MgmtObject;
    ManagementObjectCollection MgmtCollection;
    ManagementObjectSearcher MgmtSearcher;

    //Perform the search for printers and return the listing as a collection
    MgmtSearcher = new ManagementObjectSearcher("Select * from Win32_Printer");
    MgmtCollection = MgmtSearcher.Get();

    foreach (ManagementObject objWMI in MgmtCollection)
    {
       //Do whatever action you want with the Printer
    }
查看以获取Win32_打印机的方法和属性。关于你的问题:

//Test whether a Win32_Printer is out of paper or jammed
int state = Int32.Parse(objWMI["PrinterState"]);
if (state == 4) {
   //Paper Jam
} else if (state == 5) {
   //Paper Out
}

你也可以用。

开玩笑说我父亲是一名印刷工,我每天都和他说话。坚持编程!!:)