首页 > 电脑

编码实现一个打印机监视器,其中包括两个布尔型域“墨盒用尽”、“最后一次后打印过10

更新时间2019-11-07 05:37:28

一般打印机都有自带的监控程序,可以在网上查找一下如:

//原来的代码,没有整理,你可以上网搜一下 EnumJobs
String printpath = "打印机名称";
       HANDLE             hPrinter;
       Dword  dwNeeded,   dwReturne;
       JOB_INFO_2 *       pJobInfo = NULL;
     
       if(!OpenPrinter(printpath.c_str(),&hPrinter,NULL))
       {  
           ShowMessage("打开打印机失败!");
           return;
       }
       //获得需要的内存数量
       if(!EnumJobs(hPrinter,   0,   127,   2,   NULL,   0,   &dwNeeded,   &dwReturne))
       {
               if(   GetLastError()   !=   ERROR_INSUFFICIENT_BUFFER   )
               {
                        ClosePrinter(   hPrinter   );
                        ShowMessage("打开打印机内存数量失败!");
                        return;
               }
       }
       //分配内存
       pJobInfo   =   (JOB_INFO_2*)GlobalAlloc(GPTR,   dwNeeded);
       if(!pJobInfo)
       {
               //分配内存失败
               ClosePrinter(   hPrinter   );
               ShowMessage("分配内存失败!") ;
                return     ;
       }
       //获得JOB_INFO_2的数组
       if(   ! EnumJobs(   hPrinter,   0,   127,   2,   (LPBYTE)pJobInfo,   dwNeeded,   &dwNeeded,   &dwReturne   )   )
       {
               ClosePrinter(   hPrinter   );


               //delete pJobInfo;
               GlobalFree((HGLOBAL)pJobInfo);
               ShowMessage("获得JOB_INFO_2的数组失败!");
               return   ;
       }
for(j = 0 ; j< dwReturne; j++)
{
       if(pJobInfo[j].Status & JOB_STATUS_PAPEROUT  ) //
               {
                                             Fm->CheckBox1->Checked = true;
                       Fm->Edt_Ronson->Text = "打印机缺纸,或脱机";
               }
               else if(pJobInfo[j].Status & JOB_STATUS_OFFLINE  ) //
               {
                                             
                       Fm->CheckBox1->Checked = true;
                       Fm->Edt_Ronson->Text = "打印机缺纸,或脱机";
                       
               }
                             }

什么语言的

可以请店家、售后、厂家服务部指导解决。

要换了墨盒

这个问题有点深奥

当然是可以的

别换墨盒加墨就可以。

太技术性的了

墨盒使用一段时间是需要更换的。更换新的后再试试。

上一篇:小米Note8Pro怎么打开USB调试

下一篇:如何把不属于Arduino自带的硬件设备连到Arduino主板上