项目有如下需求. 需要在打印文档的时候知道打印机的状态. 比如缺纸,等.
解决方案 »
- VS2010运行直接出现401.2 ,调试时没用IIS,文件权限完全读写,请问各位老大到底是什么原因呢?
- 关于在VS2008 web程序里面的串口通讯
- Socket接收数据一定要用‘循环’吗?
- 如何设置string的第i个字符
- 拜救多线程采集网页的例子,务必是经过实践的。我已经被那些烂例子弄的半死!!!
- datagrid问题求助
- 怎样判断在TREEVIEW控件中的checkbox是否被选中?
- 在datagridview里输入一条及多条,然后插入到数据库中,
- 这是一个什么错误,为什么加上了一个Web Browser控件就出这样的错误?
- 求教:关于C#应用问题!
- 请大家看看,下面c#代码如何可以进行优化一下
- 超级难办,比较表字段为text类型的值是否相同?
要获得打印机的状态,应该定义一个联合.
enum PrinterStatus
{
其他状态= 1,
未知,
空闲,
正在打印,
预热,
停止打印,
打印中,
离线
}
其中的"正在打印"和"打印中"是同一个意思,至于为什么会是这样,目前还不知道.
在程序中添加System.Management的引用:using System.Management;
然后编写获取打印机状态的函数如下:
/// <summary>
/// 获取打印机的当前状态
/// </summary>
/// <param name="PrinterDevice">打印机设备名称</param>
/// <returns>打印机状态</returns>
private PrinterStatus GetPrinterStat(string PrinterDevice)
{
PrinterStatus ret=0;
string path=@"win32_printer.DeviceId='"+PrinterDevice+"'";
ManagementObject printer=new ManagementObject(path);
printer.Get();
ret=(PrinterStatus)Convert.ToInt32(printer.Properties["PrinterStatus"].Value);
return ret;
}
调用示例:
MessageBox.Show(GetPrinterStat("\\\\192.168.0.88\\Samsung SCX-4x16 Series").ToString());
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=352678
补充:System.Windows.Forms.MessageBox.Show(printer.Properties["WorkOffline"].Value.ToString());
可以获取打印机是否离线.