• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 13,  comments - 16,  trackbacks - 0
                HANDLE   PrnHandle;  
                if   (OpenPrinter("EPSON Stylus Photo R270 Series",&PrnHandle,NULL))  
                {  
                    unsigned    char   buf[8192];  
                    DWORD   dwSize;  
                    if   (GetPrinter(PrnHandle,2,buf,sizeof(buf),  
                        &dwSize))   {  
                        PRINTER_INFO_2*   pInfo;  
                        pInfo   =   (PRINTER_INFO_2*)buf;  
                        //pInfo->Status   就是打印機(jī)的狀態(tài),詳細(xì)的代碼可以  
                        //參見winspool.h中以PRINTER_STATUS開頭的宏定義  
                        if(pInfo->Status==PRINTER_STATUS_PAUSED)  
                            AfxMessageBox("a");  
                        else   if(pInfo->Status==PRINTER_STATUS_PENDING_DELETION)  
                            AfxMessageBox("b");  
                        ///////////以上pInfo->Status代碼試驗(yàn)不成功,哪位知道原因請(qǐng)告知,謝謝
                        if (pInfo->Attributes&PRINTER_ATTRIBUTE_WORK_OFFLINE)//測(cè)試成功
                        {
                            AfxMessageBox("offline");
                        }
                        else
                        {
                            AfxMessageBox("online");
                        }
                    }  
                    ClosePrinter(PrnHandle);
                }

            上面是判斷打印機(jī)是否連機(jī)的。
            下面是判斷打印任務(wù)是否正常完成的:
                SetTimer(1,500,NULL);//用定時(shí)器來完成

            響應(yīng)函數(shù):
            switch(nIDEvent)
                {
                case 1:
                    {
                        JOB_INFO_2  *pJobs;
                   int         cJobs,
                               i;
                   DWORD       dwPrinterStatus;
                   if (!GetJobs(hPrinter, &pJobs, &cJobs, &dwPrinterStatus))
                        return ;

                   for (i=0; i < cJobs; i++)
                   {
                       if (pJobs[i].Status &
                               (JOB_STATUS_ERROR |
                               JOB_STATUS_OFFLINE |
                               JOB_STATUS_PAPEROUT |
                               JOB_STATUS_BLOCKED_DEVQ))
                           {                  
                               KillTimer(1);
                               AfxMessageBox(pJobs[i].pDocument);
                               free( pJobs );
                               return ;
                           }
                   }
                   free( pJobs );
                    }
                    break;
                default:
                    break;
                }

            用到的方法:
            BOOL GetJobs(HANDLE hPrinter,        /* Handle to the printer. */
                            JOB_INFO_2 **ppJobInfo, /* Pointer to be filled.  */
                            int *pcJobs,            /* Count of jobs filled.  */
                            DWORD *pStatus)         /* Print Queue status.    */
               {

               DWORD               cByteNeeded,
                                    nReturned,
                                    cByteUsed;
                JOB_INFO_2          *pJobStorage = NULL;
                PRINTER_INFO_2       *pPrinterInfo = NULL;

               /* Get the buffer size needed. */
                   if (!GetPrinter(hPrinter, 2, NULL, 0, &cByteNeeded))
                   {
                       if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
                           return FALSE;
                   }

                   pPrinterInfo = (PRINTER_INFO_2 *)malloc(cByteNeeded);
                   if (!(pPrinterInfo))
                       /* Failure to allocate memory. */
                       return FALSE;

                   LPCSTR str="sssssssssss";
                   /* Get the printer information. */
                   if (!GetPrinter(hPrinter,2,(unsigned char *)(LPSTR)pPrinterInfo,cByteNeeded,&cByteUsed))
                   {
                       /* Failure to access the printer. */
                       free(pPrinterInfo);
                       pPrinterInfo = NULL;
                       return FALSE;
                   }

                   /* Get job storage space. */
                   if (!EnumJobs(hPrinter,
                           0,
                           pPrinterInfo->cJobs,
                           2,
                           NULL,
                           0,
                           (LPDWORD)&cByteNeeded,
                           (LPDWORD)&nReturned))
                   {
                       if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
                       {
                           free(pPrinterInfo);
                           pPrinterInfo = NULL;
                           return FALSE;
                       }
                   }

                   pJobStorage = (JOB_INFO_2 *)malloc(cByteNeeded);
                   if (!pJobStorage)
                   {
                       /* Failure to allocate Job storage space. */
                       free(pPrinterInfo);
                       pPrinterInfo = NULL;
                       return FALSE;
                   }

                   ZeroMemory(pJobStorage, cByteNeeded);

                   /* Get the list of jobs. */
                   if (!EnumJobs(hPrinter,
                           0,
                           pPrinterInfo->cJobs,
                           2,
                           (LPBYTE)pJobStorage,
                           cByteNeeded,
                           (LPDWORD)&cByteUsed,
                           (LPDWORD)&nReturned))
                   {
                       free(pPrinterInfo);
                       free(pJobStorage);
                       pJobStorage = NULL;
                       pPrinterInfo = NULL;
                       return FALSE;
                   }

                   /*
                    *  Return the information.
                    */
                   *pcJobs = nReturned;
                   *pStatus = pPrinterInfo->Status;
                   *ppJobInfo = pJobStorage;
                   free(pPrinterInfo);

                   return TRUE;

               }


            需要插入頭文件#include <winspool.h>

            posted on 2009-07-15 17:49 似水之心 閱讀(5915) 評(píng)論(3)  編輯 收藏 引用

            FeedBack:
            # re: 獲取打印機(jī)連接狀態(tài)及打印任務(wù)是否錯(cuò)誤
            2009-07-16 18:57 | 凡客誠品
            來分享下  回復(fù)  更多評(píng)論
              
            # re: 獲取打印機(jī)連接狀態(tài)及打印任務(wù)是否錯(cuò)誤
            2009-09-10 09:35 | vanlin
            始終不好用,,   回復(fù)  更多評(píng)論
              
            # re: 獲取打印機(jī)連接狀態(tài)及打印任務(wù)是否錯(cuò)誤
            2010-11-18 16:52 | dahai
            isok=GetPrinter(PrnHandle,2,NULL,NULL,&dwSize);
            if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER)
            {
            ClosePrinter(PrnHandle);
            return false;
            }

            在你的GetPrinter函數(shù)前面再加上這些!  回復(fù)  更多評(píng)論
              

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理



            <2010年11月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            常用鏈接

            留言簿(2)

            隨筆檔案

            文章檔案

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            国产精品久久久久久久人人看 | 亚洲精品成人网久久久久久| 99久久国产综合精品五月天喷水| 久久美女人爽女人爽| 久久亚洲天堂| 国内精品久久久久久99蜜桃| 亚洲精品高清一二区久久| 综合久久一区二区三区| 色诱久久久久综合网ywww| 久久精品综合一区二区三区| av午夜福利一片免费看久久| 久久精品亚洲乱码伦伦中文| 久久精品国产亚洲av麻豆色欲| 精品久久久久久久久免费影院| 久久亚洲私人国产精品| 久久精品人妻一区二区三区| 伊人久久大香线蕉av一区| 久久久青草青青国产亚洲免观| 色偷偷偷久久伊人大杳蕉| 久久综合久久性久99毛片| 日韩精品久久久久久| 色狠狠久久AV五月综合| 久久免费视频一区| 国产成人精品久久亚洲| 久久久WWW成人免费毛片| 99精品久久久久中文字幕| 久久精品国产99久久无毒不卡| 亚洲精品国产自在久久| 精品久久久久中文字| 久久这里只有精品视频99| 久久se精品一区精品二区| 久久久久久久综合日本| 欧美伊香蕉久久综合类网站| 国产精品一区二区久久精品| 久久久久免费看成人影片| 青草国产精品久久久久久| 久久久无码一区二区三区 | 色综合久久久久综合体桃花网 | 久久影视综合亚洲| 久久精品中文字幕第23页| 久久免费国产精品|