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

求windows上打印机状态监控的代码

2012-12-30 
求windows下打印机状态监控的代码要写短代码检测打印机的日常状态,比如:卡纸、缺纸报警、无纸等状态的检测。

求windows下打印机状态监控的代码
要写短代码检测打印机的日常状态,比如:卡纸、缺纸报警、无纸等状态的检测。那位大虾有这方面的代码供参考呢。谢谢
[解决办法]
//原来的代码,没有整理,你可以上网搜一下 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 = "打印机缺纸,或脱机";
                        
                }
                              }

热点排行