下面的代码就是去测试你系统中的打印机是否是已经连接好,它能运用于usb及 网络打印机(并行口打印机还没有测试>
using System;
using System.Management;
namespace zedilabs.com
{
class PrinterOffline
{
[STAThread]
static void Main(string[] args)
{
// Set management scope
ManagementScope scope = new ManagementScope(@"/root/cimv2");
scope.Connect();
// Select Printers from WMI Object Collections
ManagementObjectSearcher searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_Printer");
string printerName = "";
foreach (ManagementObject printer in searcher.Get())
{
printerName = printer["Name"].ToString().ToLower();
if (printerName.Equals(@"hp deskjet 930c"))
{
Console.WriteLine("Printer = " + printer["Name"]);
if (printer["WorkOffline"].ToString().ToLower().Equals("true"))
{
// printer is offline by user
Console.WriteLine("Your Plug-N-Play printer is not connected.");
}
else
{
// printer is not offline
Console.WriteLine("Your Plug-N-Play printer is connected.");
}
}
}
}
}
}
注意:上面的WorkOffline 这个属性对Windows2000.winNT不提供。所以最好不用这个属性,请用 PrintStatus
if(strPrinter.ToLower() == PrinterName.ToLower())
return printer["PrinterStatus"].ToString().ToLower().Equals("3");