Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sampel kode nanti dalam topik ini menunjukkan cara mengirim data kontrol printer langsung ke printer yang menggunakan driver printer berbasis GDI.
Langkah-langkah berikut menjelaskan cara mengirim data langsung ke printer. Langkah-langkah ini juga diilustrasikan dalam contoh kode yang mengikuti.
- Panggil OpenPrinter untuk mendapatkan handle ke perangkat printer.
- Inisialisasi struktur DOCINFO dengan data printer.
- Panggil StartDocPrinter untuk menunjukkan bahwa aplikasi akan mengirim data dokumen ke printer.
- Panggil StartPagePrinter untuk menunjukkan bahwa aplikasi akan mengirim halaman baru ke printer.
- PanggilWritePrinteruntuk mengirim data.
- PanggilEndPagePrinter untuk menunjukkan bahwa semua data untuk halaman saat ini telah dikirim.
- PanggilEndDocPrinter untuk menunjukkan bahwa semua data untuk dokumen ini telah dikirim.
- Panggil ClosePrinter untuk merilis sumber daya.
Kirim data kontrol printer langsung ke printer yang menggunakan pengandar printer berbasis GDI.
//
// 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;
}
Topik terkait