使用 Win32 API 將原始數據傳送至印表機

本文介紹如何使用 Win32 API 將原始數據傳送至印表機。

原始產品版本: Windows API
原始 KB 編號: 138594

摘要

有時必須直接將印表機特定的數據傳送至印表機,而略過驅動程式。 Win32 API 提供可在本機和網路印表機上運作的功能。 這個方法可用來取代 PASSTHROUGH 舊版 Windows API 中使用的逸出和 SpoolFile() 方法。

程式碼範例

您可以使用下列程式代碼,將原始數據直接傳送至 Windows NT 或 Windows 95 中的印表機。

// RawDataToPrinter - sends binary data directly to a printer
// Params:
//   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(LPSTR szPrinterName, LPBYTE lpData, DWORD dwCount)
{
    HANDLE     hPrinter;
    DOC_INFO_1 DocInfo;
    DWORD      dwJob;
    DWORD      dwBytesWritten;

    // Need a handle to the printer.
    if(!OpenPrinter( szPrinterName, &hPrinter, NULL))
    return FALSE;

    // Fill in the structure with info about this "document."
    DocInfo.pDocName = "My Document";
    DocInfo.pOutputFile = NULL;
    DocInfo.pDatatype = "RAW";
    // Inform the spooler the document is beginning.
    if((dwJob = StartDocPrinter(hPrinter, 1, (LPSTR)&DocInfo)) == 0)
    {
      ClosePrinter(hPrinter);
      return FALSE;
    }
    // Start a page.
    if(!StartPagePrinter(hPrinter))
    {
      EndDocPrinter(hPrinter);
      ClosePrinter(hPrinter);
      return FALSE;
    }
    // Send the data to the printer.
    if(!WritePrinter(hPrinter, lpData, dwCount, &dwBytesWritten))
    {
      EndPagePrinter(hPrinter);
      EndDocPrinter(hPrinter);
      ClosePrinter(hPrinter);
      return FALSE;
    }
    // End the page.
    if(!EndPagePrinter(hPrinter))
    {
      EndDocPrinter(hPrinter);
      ClosePrinter(hPrinter);
      return FALSE;
    }
    // Inform the spooler that the document is ending.
    if(!EndDocPrinter(hPrinter))
    {
      ClosePrinter(hPrinter);
      return FALSE;
    }
    // Tidy up the printer handle.
    ClosePrinter(hPrinter);
    // Check to see if correct number of bytes were written.
    if(dwBytesWritten != dwCount)
      return FALSE;
      return TRUE;
}

下列檔案可供從 Microsoft 下載中心下載:

RAWPRN.EXE

如需如何下載 Microsoft 支援服務 檔案的詳細資訊,請參閱如何從 線上服務 取得 Microsoft 支援檔案

Microsoft 已掃描此檔案是否有病毒。 Microsoft 使用了最新的病毒偵測軟體,該軟體可在檔案張貼的日期取得。 檔案會儲存在安全性增強的伺服器上,以協助防止對檔案進行任何未經授權的變更。