EDN Admin
Well-known member
<div style="border-right:#7f9db9 1px solid;border-top:#7f9db9 1px solid;font-size:11px;overflow:auto;border-left:#7f9db9 1px solid;line-height:100%! important;border-bottom:#7f9db9 1px solid;font-family:Courier New;background-color:white
<table style="border-top-width:0px;border-left-width:0px;margin:2px 0px;width:99%;border-bottom:#eee 0px solid;border-collapse:collapse;background-color:#fff;border-right-width:0px" cellspacing=0 cellpadding=0>
<colgroup>
<col style="padding-left:10px;font-size:11px;border-bottom:#f7f7f7 1px solid;font-family:Courier New;white-space:nowrap
<tbody>
<tr>
<td><font style="font-size:11px CString PrinterName; </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 DWORD </font><font style="color:red BufferSize</font><font style="font-size:11px = </font><font style="color:blue 1000</font><font style="font-size:11px ; </font></td></tr>
<tr>
<td> if (!GetDefaultPrinter(PrinterName.GetBuffer(),&BufferSize)) AfxMessageBox("error in get printer name."); </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> if(0!=GetPrinterStatus(PrinterName.GetBuffer())) </td></tr>
<tr>
<td style="background-color:#f7f7f7 AfxMessageBox("Printer is normal"); </td></tr>
<tr>
<td> else AfxMessageBox("Printer is out of order"); </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> </td></tr>
<tr>
<td style="background-color:#f7f7f7 DWORD CprntDlg::GetPrinterStatus( char* szPrnName ) </td></tr>
<tr>
<td>{ </td></tr>
<tr>
<td style="background-color:#f7f7f7 HANDLE </font><font style="color:red hHandle</font><font style="font-size:11px = </font><font style="color:blue 0</font><font style="font-size:11px ; // Handle of the printer </font></td></tr>
<tr>
<td> </td></tr>
<tr>
<td style="background-color:#f7f7f7 DWORD </font><font style="color:red dwStatus</font><font style="font-size:11px = </font><font style="color:blue 0</font><font style="font-size:11px ; // Printer status we should receive </font></td></tr>
<tr>
<td> // Few values for example: </td></tr>
<tr>
<td style="background-color:#f7f7f7 // 0x00000000 - ready </td></tr>
<tr>
<td> // 0x00000001 - paused </td></tr>
<tr>
<td style="background-color:#f7f7f7 // 0x00000002 - error </td></tr>
<tr>
<td> // 0x00000200 - busy </td></tr>
<tr>
<td style="background-color:#f7f7f7 // 0x00000400 - printing </td></tr>
<tr>
<td> // for more info please see MSDN </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> DWORD </font><font style="color:red dwSize</font><font style="font-size:11px = </font><font style="color:blue 0</font><font style="font-size:11px ; // Size of memory we should </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 // allocate for PRINTER_INFO_2 </td></tr>
<tr>
<td> </td></tr>
<tr>
<td style="background-color:#f7f7f7 PRINTER_INFO_2* </font><font style="color:red pPrnInfo2</font><font style="font-size:11px = </font><font style="color:blue 0</font><font style="font-size:11px ; // Structure specifies detailed </font></td></tr>
<tr>
<td> // printer information </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> DEVMODE </font><font style="color:red DevMode</font><font style="font-size:11px = {0}; // Structure contains information </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 // about the device initialization </td></tr>
<tr>
<td> // and environment of a printer </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> PRINTER_DEFAULTS </font><font style="color:red PrnDef</font><font style="font-size:11px = { 0, &DevMode, PRINTER_ACCESS_USE }; </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> // Open printer with name szPrnName </td></tr>
<tr>
<td style="background-color:#f7f7f7 if( !OpenPrinter( szPrnName, &hHandle, &PrnDef ) ) </td></tr>
<tr>
<td> return 0; // Error </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> // How many memory should be allocated for printer data? </td></tr>
<tr>
<td style="background-color:#f7f7f7 GetPrinter( hHandle, 2, 0, 0, &dwSize ); </td></tr>
<tr>
<td> if( !dwSize ) </td></tr>
<tr>
<td style="background-color:#f7f7f7 return 0; // Error </td></tr>
<tr>
<td> </td></tr>
<tr>
<td style="background-color:#f7f7f7 // Allocate memory </td></tr>
<tr>
<td> </font><font style="color:red pPrnInfo2</font><font style="font-size:11px = (PRINTER_INFO_2*)malloc( dwSize ); </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> // Receive printer details </td></tr>
<tr>
<td style="background-color:#f7f7f7 if(!GetPrinter( hHandle, 2, (LPBYTE)pPrnInfo2, dwSize, &dwSize )) </td></tr>
<tr>
<td> return 0; // Error </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> </font><font style="color:red dwStatus</font><font style="font-size:11px = </font><font style="color:blue pPrnInfo2</font><font style="font-size:11px -</font><font style="color:blue ></font><font style="font-size:11px Status; </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> // Free allocated memory </td></tr>
<tr>
<td style="background-color:#f7f7f7 //free( pPrnInfo2 ); //? </td></tr>
<tr>
<td> </td></tr>
<tr>
<td style="background-color:#f7f7f7 // Close printer </td></tr>
<tr>
<td> ClosePrinter( hHandle ); </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> return dwStatus; </td></tr>
<tr>
<td style="background-color:#f7f7f7 } </td></tr></tbody></table>
how to check the printer status.
my application need to check the printer status before i send any text or image to printer, e.g. printer outof line, out of paper
etc.
i just dont know why the following code come out status 0 every time? even if i did not connect the printer there.
i paste the code here. it always comes out "printer is normal", even if i did not connect any printer.
what should i do? thank you to point the problems out for me.
<hr size="1" align="left" width="25% gusto
View the full article
<table style="border-top-width:0px;border-left-width:0px;margin:2px 0px;width:99%;border-bottom:#eee 0px solid;border-collapse:collapse;background-color:#fff;border-right-width:0px" cellspacing=0 cellpadding=0>
<colgroup>
<col style="padding-left:10px;font-size:11px;border-bottom:#f7f7f7 1px solid;font-family:Courier New;white-space:nowrap
<tbody>
<tr>
<td><font style="font-size:11px CString PrinterName; </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 DWORD </font><font style="color:red BufferSize</font><font style="font-size:11px = </font><font style="color:blue 1000</font><font style="font-size:11px ; </font></td></tr>
<tr>
<td> if (!GetDefaultPrinter(PrinterName.GetBuffer(),&BufferSize)) AfxMessageBox("error in get printer name."); </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> if(0!=GetPrinterStatus(PrinterName.GetBuffer())) </td></tr>
<tr>
<td style="background-color:#f7f7f7 AfxMessageBox("Printer is normal"); </td></tr>
<tr>
<td> else AfxMessageBox("Printer is out of order"); </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> </td></tr>
<tr>
<td style="background-color:#f7f7f7 DWORD CprntDlg::GetPrinterStatus( char* szPrnName ) </td></tr>
<tr>
<td>{ </td></tr>
<tr>
<td style="background-color:#f7f7f7 HANDLE </font><font style="color:red hHandle</font><font style="font-size:11px = </font><font style="color:blue 0</font><font style="font-size:11px ; // Handle of the printer </font></td></tr>
<tr>
<td> </td></tr>
<tr>
<td style="background-color:#f7f7f7 DWORD </font><font style="color:red dwStatus</font><font style="font-size:11px = </font><font style="color:blue 0</font><font style="font-size:11px ; // Printer status we should receive </font></td></tr>
<tr>
<td> // Few values for example: </td></tr>
<tr>
<td style="background-color:#f7f7f7 // 0x00000000 - ready </td></tr>
<tr>
<td> // 0x00000001 - paused </td></tr>
<tr>
<td style="background-color:#f7f7f7 // 0x00000002 - error </td></tr>
<tr>
<td> // 0x00000200 - busy </td></tr>
<tr>
<td style="background-color:#f7f7f7 // 0x00000400 - printing </td></tr>
<tr>
<td> // for more info please see MSDN </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> DWORD </font><font style="color:red dwSize</font><font style="font-size:11px = </font><font style="color:blue 0</font><font style="font-size:11px ; // Size of memory we should </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 // allocate for PRINTER_INFO_2 </td></tr>
<tr>
<td> </td></tr>
<tr>
<td style="background-color:#f7f7f7 PRINTER_INFO_2* </font><font style="color:red pPrnInfo2</font><font style="font-size:11px = </font><font style="color:blue 0</font><font style="font-size:11px ; // Structure specifies detailed </font></td></tr>
<tr>
<td> // printer information </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> DEVMODE </font><font style="color:red DevMode</font><font style="font-size:11px = {0}; // Structure contains information </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 // about the device initialization </td></tr>
<tr>
<td> // and environment of a printer </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> PRINTER_DEFAULTS </font><font style="color:red PrnDef</font><font style="font-size:11px = { 0, &DevMode, PRINTER_ACCESS_USE }; </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> // Open printer with name szPrnName </td></tr>
<tr>
<td style="background-color:#f7f7f7 if( !OpenPrinter( szPrnName, &hHandle, &PrnDef ) ) </td></tr>
<tr>
<td> return 0; // Error </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> // How many memory should be allocated for printer data? </td></tr>
<tr>
<td style="background-color:#f7f7f7 GetPrinter( hHandle, 2, 0, 0, &dwSize ); </td></tr>
<tr>
<td> if( !dwSize ) </td></tr>
<tr>
<td style="background-color:#f7f7f7 return 0; // Error </td></tr>
<tr>
<td> </td></tr>
<tr>
<td style="background-color:#f7f7f7 // Allocate memory </td></tr>
<tr>
<td> </font><font style="color:red pPrnInfo2</font><font style="font-size:11px = (PRINTER_INFO_2*)malloc( dwSize ); </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> // Receive printer details </td></tr>
<tr>
<td style="background-color:#f7f7f7 if(!GetPrinter( hHandle, 2, (LPBYTE)pPrnInfo2, dwSize, &dwSize )) </td></tr>
<tr>
<td> return 0; // Error </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> </font><font style="color:red dwStatus</font><font style="font-size:11px = </font><font style="color:blue pPrnInfo2</font><font style="font-size:11px -</font><font style="color:blue ></font><font style="font-size:11px Status; </font></td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> // Free allocated memory </td></tr>
<tr>
<td style="background-color:#f7f7f7 //free( pPrnInfo2 ); //? </td></tr>
<tr>
<td> </td></tr>
<tr>
<td style="background-color:#f7f7f7 // Close printer </td></tr>
<tr>
<td> ClosePrinter( hHandle ); </td></tr>
<tr>
<td style="background-color:#f7f7f7 </td></tr>
<tr>
<td> return dwStatus; </td></tr>
<tr>
<td style="background-color:#f7f7f7 } </td></tr></tbody></table>
how to check the printer status.
my application need to check the printer status before i send any text or image to printer, e.g. printer outof line, out of paper
etc.
i just dont know why the following code come out status 0 every time? even if i did not connect the printer there.
i paste the code here. it always comes out "printer is normal", even if i did not connect any printer.
what should i do? thank you to point the problems out for me.
<hr size="1" align="left" width="25% gusto
View the full article