Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kodexemplet senare i det här avsnittet visar hur du skickar skrivarkontrolldata direkt till skrivare som använder GDI-baserade skrivardrivrutiner.
Följande steg beskriver hur du skickar data direkt till en skrivare. De här stegen visas också i kodexemplet som följer.
- Anropa OpenPrinter för att få ett handtag till skrivaren.
- Initiera en DOCINFO- struktur med skrivardata.
- Anropa StartDocPrinter för att ange att programmet skickar dokumentdata till skrivaren.
- Anropa StartPagePrinter för att ange att programmet skickar en ny sida till skrivaren.
- Anropa WritePrinter för att skicka data.
- Anropa EndPagePrinter för att ange att alla data för den aktuella sidan har skickats.
- Anropa EndDocPrinter för att ange att alla data för det här dokumentet har skickats.
- Anropa ClosePrinter för att frigöra resurserna.
Skicka skrivarkontrolldata direkt till skrivare som använder GDI-baserade skrivardrivrutiner.
//
// RawDataToPrinter - sends binary data directly to a printer
//
// szPrinterName: NULL-terminated string specifying printer name
// lpData: Pointer to raw data bytes
// dwCount Length of lpData in bytes
//
// Returns: TRUE for success, FALSE for failure.
//
BOOL RawDataToPrinter(LPTSTR szPrinterName, LPBYTE lpData, DWORD dwCount)
{
BOOL bStatus = FALSE;
HANDLE hPrinter = NULL;
DOC_INFO_1 DocInfo;
DWORD dwJob = 0L;
DWORD dwBytesWritten = 0L;
// Open a handle to the printer.
bStatus = OpenPrinter( szPrinterName, &hPrinter, NULL );
if (bStatus) {
// Fill in the structure with info about this "document."
DocInfo.pDocName = (LPTSTR)_T("My Document");
DocInfo.pOutputFile = NULL;
DocInfo.pDatatype = (LPTSTR)_T("RAW");
// Inform the spooler the document is beginning.
dwJob = StartDocPrinter( hPrinter, 1, (LPBYTE)&DocInfo );
if (dwJob > 0) {
// Start a page.
bStatus = StartPagePrinter( hPrinter );
if (bStatus) {
// Send the data to the printer.
bStatus = WritePrinter( hPrinter, lpData, dwCount, &dwBytesWritten);
EndPagePrinter (hPrinter);
}
// Inform the spooler that the document is ending.
EndDocPrinter( hPrinter );
}
// Close the printer handle.
ClosePrinter( hPrinter );
}
// Check to see if correct number of bytes were written.
if (!bStatus || (dwBytesWritten != dwCount)) {
bStatus = FALSE;
} else {
bStatus = TRUE;
}
return bStatus;
}
Relaterade ämnen