winaip文档服务器打印,使用 Win32 API 将原始数据发送到打印机
使用 Win32 API 將原始數據發送到打印機
02/28/2020
本文內容
本文介紹如何使用 Win32 API 將原始數據發送到打印機。
原始產品版本: ?Windows API
原始 KB 數: ?138594
摘要
有時,不需要將打印機特定的數據直接發送到打印機,而是繞過驅動程序。 Win32 API 提供了它在本地和網絡打印機上的工作方式。 此方法可用于替換 PASSTHROUGH SpoolFile() 在早期版本的 Windows API 中使用的轉義和方法。
代碼示例
您可以使用以下代碼將原始數據直接發送到 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 下載中心下載:
有關如何下載 Microsoft 支持文件的詳細信息,請參閱如何從聯機服務獲取 Microsoft 支持文件。
Microsoft 已對此文件進行病毒掃描。 Microsoft 使用了最新的病毒檢測軟件,該軟件在文件發布之日起可用。 文件存儲在安全增強的服務器上,可幫助防止對文件進行任何未經授權的更改。
總結
以上是生活随笔為你收集整理的winaip文档服务器打印,使用 Win32 API 将原始数据发送到打印机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 能效管理平台在污水处理厂中的应用
- 下一篇: 234. 回文链表