如何檢測打印機是否聯機
發表于: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.ReadTotalTimeoutConst
ant = 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