如何檢測打印機是否聯機

發表于:2007-07-14來源:作者:點擊數: 標簽:
使用專用打印機 ,沒有驅動程序,我用直接往lpt1寫的方法打印,如果打印機聯接正常, 打印的數據會正常輸出,但是當打印機未聯機或打印機沒開,程序打印時就會死機,只能按Ctrl+Alt+Del強行終止 。有什么辦法可以判斷打印機狀態,或是如何設置一個timeout時
    使用專用打印機 ,沒有驅動程序,我用直接往lpt1寫的方法打印,如果打印機聯接正常, 打印的數據會正常輸出,但是當打印機未聯機或打印機沒開,程序打印時就會死機,只能按Ctrl+Alt+Del強行終止 。有什么辦法可以判斷打印機狀態,或是如何設置一個timeout時間來終止 打印 ?

方法如下:

    bool LptPrint(char prtdata[],int prtlen,int timeout)
    {
     HANDLE h;
     DWORD n;
     COMMTIMEOUTS t;
     bool result;
     h = CreateFile("lpt1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
     if (h == INVALID_HANDLE_VALUE){
     AfxMessageBox("Can not open lpt1");
     return false;
     }
     t.ReadIntervalTimeout = 0;
     t.ReadTotalTimeoutMultiplier = 0;
     t.ReadTotalTimeoutConstant = 0;
     t.WriteTotalTimeoutMultiplier = timeout * 1000 / prtlen;
     t.WriteTotalTimeoutConstant = 0;
     if (!SetCommTimeouts(h,&t)){
     AfxMessageBox("SetCommTimeout error");
     return false;
     }
     result = true;
     if (!WriteFile(h,prtdata,prtlen,&n,NULL)){
     AfxMessageBox("Print error");
     result = false;
     }
     CloseHandle(h);
     return result;
    } 

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97