【发布时间】:2014-05-24 07:35:06
【问题描述】:
我有一个 Windows 窗体应用程序,我正在尝试打印一些东西,但如果没有实际的打印机(不是 xps 或其他东西),我想显示一个消息框,指示没有实际的打印机。所以简而言之,我希望他们打印当前计算机中是否有默认打印机设置为默认打印机,这会导致我检查默认打印机是否真实。
【问题讨论】:
我有一个 Windows 窗体应用程序,我正在尝试打印一些东西,但如果没有实际的打印机(不是 xps 或其他东西),我想显示一个消息框,指示没有实际的打印机。所以简而言之,我希望他们打印当前计算机中是否有默认打印机设置为默认打印机,这会导致我检查默认打印机是否真实。
【问题讨论】:
您可以使用 System.Management 执行此操作。使用以下类来解决您的问题:
public class MyClass
{
static void printProps(ManagementObject o, string prop)
{
try
{
Console.WriteLine(prop + "|" + o[prop]);
}
catch (Exception e)
{
Console.Write(e.ToString());
}
}
[STAThread]
static void Main(string[] args)
{
ManagementObjectSearcher searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_Printer where Default=True");
string printerName = "";
foreach (ManagementObject printer in searcher.Get())
{
printerName = printer["Name"].ToString().ToLower();
Console.WriteLine("Printer :" + printerName);
printProps(printer, "WorkOffline");
//Console.WriteLine();
switch (Int32.Parse(printer["PrinterStatus"].ToString()))
{
case 1: Console.WriteLine("Other"); break;
case 2: Console.WriteLine("Unknown"); break;
case 3: Console.WriteLine("Idle"); break;
case 4: Console.WriteLine("Printing"); break;
case 5: Console.WriteLine("Warmup"); break;
case 6: Console.WriteLine("Stopped printing"); break;
case 7: Console.WriteLine("Offline"); break;
}
}
}
}
【讨论】: