Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Codebeispiel weiter unten in diesem Thema zeigt, wie Sie Druckersteuerungsdaten direkt an Drucker senden, die GDI-basierte Druckertreiber verwenden.
In den folgenden Schritten wird beschrieben, wie Daten direkt an einen Drucker gesendet werden. Diese Schritte werden auch im folgenden Codebeispiel veranschaulicht.
- Rufen Sie OpenPrinter auf, um ein Handle für den Drucker zu erhalten.
- Initialisieren Sie eine DOCINFO-Struktur mit den Druckerdaten.
- Rufen Sie StartDocPrinter auf, um anzugeben, dass die Anwendung Dokumentdaten an den Drucker sendet.
- Rufen Sie StartPagePrinter auf, um anzugeben, dass die Anwendung eine neue Seite an den Drucker sendet.
- Rufen Sie WritePrinter auf, um die Daten zu senden.
- Rufen Sie EndPagePrinter auf, um anzugeben, dass alle Daten für die aktuelle Seite gesendet wurden.
- Rufen Sie EndDocPrinter auf, um anzugeben, dass alle Daten für dieses Dokument gesendet wurden.
- Rufen Sie ClosePrinter auf, um die Ressourcen freizugeben.
Senden sie Druckersteuerungsdaten direkt an Drucker, die GDI-basierte Druckertreiber verwenden.
//
// 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;
}
Zugehörige Themen