首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于c#监控打印机的有关问题(论坛中没有打印机版块,暂时发这里了)

2013-09-11 
关于c#监控打印机的问题(论坛中没有打印机版块,暂时发这里了)目前c#去监控本地安装的打印机,包括网络打印

关于c#监控打印机的问题(论坛中没有打印机版块,暂时发这里了)
目前c#去监控本地安装的打印机,包括网络打印机,这块都实现了,调用的winAPI实现的,目的是想要阻止用户打印,用户打印的时候,如果选择其他的打印机,任务将被拦截,并且清空打印任务,提醒用户使用我们提供的虚拟打印机进行打印.

目前我采取的拦截手段是,随机启动一个系统服务程序,实时监控PC机上安装的所有打印机,在打印队列中一旦出现打印任务,立刻清除.
现在的问题是:
在我的电脑上,打印队列中,很奇怪的出现了其他用户的打印任务,打印机是网络打印机,所有用户都是直接连接到网络打印机上的,相互之间并没有共享打印机,而且,网络打印机也无法共享,这就导致,我在拦截的时候,拦到了不是本机发出的打印任务,用户没打印,却会弹出提醒框,比较郁闷,无法区分出来,到底是本机的打印任务还是别人的打印任务.

希望有经验的人指点一下,如果有更好的监控拦截方式,请不吝赐教,小弟感激不尽.
[解决办法]
没有搞过这方面的,高深
不过你可以根据打印队列中打印所有者来进行对比,
看看,当前打印文档的所有者,是否是本机的计算机名,如果则提示,如果不是则不弹出提示
具体没有测试过,
只是提供一个思路,
不知道是是否可行
[解决办法]
共享的打印机你能监控到不?!
\\..\.
[解决办法]
获取打印任务


 using   System.Management;   
    
      private   ManagementObjectSearcher   query;   
      private   ManagementObjectCollection   queryCollection;   
      string   _classname="SELECT   *   FROM   Win32_Printer";   
    
    query=new   ManagementObjectSearcher(_classname);                           
    queryCollection   =   query.Get();   
    
    foreach   (ManagementObject   mo   in   queryCollection)   
    {                   
          if   (string.Compare(mo["Name"].ToString(),PrinterName,true)==0)   
          {   
                  mo.InvokeMethod("SetDefaultPrinter",null);       //调用了其方法,可修改此处获取相关状态属性   


                  break;   
          }   
    }   


[解决办法]
参考http://www.cnblogs.com/luckeryin/archive/2009/07/13/1522775.html
[解决办法]
监控打印机,包括网络的打印机.请问下是怎么实现的,我用了WMI,Win32_Printer 去获取打印机状态的,,无论打印是否连接上,或者卡纸,或者打开盖了,没纸,可是返回的结果总是正常的....你调用的winAPI是什么
[解决办法]
我现在也在做打印机打印,现在要做个监控打印机状态的,卡纸,异常等的所有状态。。。我用了很多方法都没法获取得到打印机的真实状态....有什么方法可以拿到真实的状态吗,求解????
[解决办法]
用网络打印机也要在客户端装驱动的这是无法避免的了。

热点排行