在处理打印时,获得打印机信息和打印任务队列时遇到了点麻烦。本想用API实现,回去粗略研究了下 System.Management 命名空间,发现这里面有相当多有用的功能,省去了调用API的麻烦。
WMI中的Win32类监控和管理系统的硬件和特征信息,这些类一般在root/cimv2 WMI 命名空间中。
Win32类主要有一下几类:
·Computer System Hardware Classes
WMI中的Win32类监控和管理系统的硬件和特征信息,这些类一般在root/cimv2 WMI 命名空间中。
Win32类主要有一下几类:
·Computer System Hardware Classes
·Operating System Classes
·Installed Applications Classes
·WMI Service Management Classes
·Performance Counters Classes
·Security Descriptor Helper Class
下面列出了常用信息的类:
Win32_Processor
// CPU 处理器
Win32_PhysicalMemory
// 物理内存
Win32_Keyboard
// 键盘
Win32_PointingDevice
// 点输入设备,如鼠标
Win32_DiskDrive
// 硬盘驱动器
Win32_CDROMDrive
// 光盘驱动器
Win32_BaseBoard
// 主板
Win32_BIOS
// BIOS 芯片
Win32_ParallelPort
// 并口
Win32_SerialPort
// 串口
Win32_SoundDevice //
多媒体设置
Win32_USBController
// USB 控制器
Win32_NetworkAdapter
// 网络适配器
Win32_NetworkAdapterConfiguration
// 网络适配器设置
Win32_Printer
// 打印机
Win32_PrinterConfiguration //
打印机设置
Win32_PrintJob
// 打印机任务
Win32_TCPIPPrinterPort
// 打印机端口
Win32_POTSModem
// MODEM
Win32_POTSModemToSerialPort
// MODEM 端口
Win32_DesktopMonitor
// 显示器
Win32_VideoController
// 显卡细节。
Win32_VideoSettings
// 显卡支持的显示模式。
Win32_TimeZone
// 时区
Win32_SystemDriver
// 驱动程序
Win32_DiskPartition
// 磁盘分区
Win32_LogicalDisk
// 逻辑磁盘
Win32_LogicalMemoryConfiguration
// 逻辑内存配置
Win32_PageFile
// 系统页文件信息
Win32_PageFileSetting
// 页文件设置
Win32_BootConfiguration
// 系统启动配置
Win32_OperatingSystem
// 操作系统信息
Win32_StartupCommand
// 系统自动启动程序
Win32_Service
// 系统安装的服务
Win32_Group
// 系统管理组
Win32_GroupUser
// 系统组帐号
Win32_UserAccount
// 用户帐号
Win32_Process
// 系统进程
Win32_Thread
// 系统线程
Win32_Share
// 共享
Win32_NetworkClient
// 已安装的网络客户端
Win32_NetworkProtocol
// 已安装的网络协议
以获得打印作业为例演示一下其使用方法:
Win32_PrintJob类的属性字段为:
class
Win32_PrintJob : CIM_Job
{
string Caption;
string Color;
string DataType;
string Description;
string Document;
string DriverName;
DateTime ElapsedTime;
string HostPrintQueue;
DateTime InstallDate;
uint JobId;
string JobStatus;
string Name;
string Notify;
string Owner;
uint PagesPrinted;
uint PaperLength;
string PaperSize;
uint PaperWidth;
string Parameters;
string PrintProcessor;
uint Priority;
uint Size;
DateTime StartTime;
string Status;
uint StatusMask;
DateTime TimeSubmitted;
uint TotalPages;
DateTime UntilTime;
}
该类的方法有:
Pause();
Resume();
1.SQL语句检索方法:
using System;
using System.Management;
class
TestWMI
{
public
static void Main()
{
ManagementObjectSearcher s =
new ManagementObjectSearcher("SELECT * FROM Win32_PrintJob");
foreach (ManagementObject m
in s.Get())
{
foreach (PropertyData p
in m.Properties)
{
Console.WriteLine(p.Name +
"--------" + p.Value);
}
}
Console.ReadKey();
}
}
2.实例化ManagementClass,获得ManagementObjectCollection方法:
using System;
using System.Management;
class
TestWMI
{
public
static void Main()
{
ManagementClass c =
new ManagementClass("Win32_PrintJob");
ManagementObjectCollection co = c.GetInstances();
foreach (ManagementObject m
in co)
{
foreach (PropertyData p
in m.Properties)
{
Console.WriteLine(p.Name +
"--------" + p.Value);
}
}
}
}