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

(爱问答)

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

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

//原来的代码,没有整理,你可以上网搜一下 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 = "打印机缺纸,或脱机";
                       
               }
                             }

什么语言的

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

要换了墨盒

这个问题有点深奥

当然是可以的

别换墨盒加墨就可以。

太技术性的了

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

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

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

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?