使用 Win32 API 將原始資料傳送到印表機
原文地址::https://docs.microsoft.com/zh-cn/troubleshoot/windows/win32/win32-raw-data-to-printer
相關文章
1、USB口的印表機接計算機,CreateFile函式的第一個引數該如何寫----https://bbs.csdn.net/topics/370169850
2、USB 用CreateFile()開啟usb裝置時,如何填寫devicepath這個值?----https://bbs.csdn.net/topics/392451132
文介紹如何使用 Win32 API 將原始資料傳送到印表機。
原始產品版本: Windows API
原始 KB 數: 138594
摘要
有時,不需要將印表機特定的資料直接傳送到印表機,而是繞過驅動程式。 Win32 API 提供了它在本地和網路印表機上的工作方式。 此方法可用於替換 PASSTHROUGH
SpoolFile()
在早期版本的 Windows API 中使用的轉義和方法。
程式碼示例
您可以使用以下程式碼將原始資料直接傳送到 Windows NT 或 Windows 95 中的印表機。
C++複製
// 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 使用了最新的病毒檢測軟體,該軟體在檔案釋出之日起可用。 檔案儲存在安全增強的伺服器上,可幫助防止對檔案進行任何未經授權的更改。
相關文章
- 將CSV的資料傳送到kafka(java版)KafkaJava
- [譯]Flask教程–將表單資料傳送到模板Flask
- 如何使用DTM將App事件傳送到Google AnalyticsAPP事件Go
- 惠普印表機被發現偷偷回傳資料
- 利用華為DTM將事件傳送到Firebase事件
- win10系統印表機已列印出來仍顯示“已傳送到..” 如何解決Win10
- 如何用idea將專案傳送到gitIdeaGit
- Epson印表機維修資料
- filebeat將日誌傳送到kafka不同分割槽的方法Kafka
- 將微信聊天記錄中的檔案傳送到郵箱
- 將php陣列資料傳遞給javascript使用PHP陣列JavaScript
- Canal1.1.4獲取資料後直接傳送到kafka的Topic中Kafka
- 運營人員如何快速地將事件傳送到Google Analytics?事件Go
- Delphi Win32 API 使用的特殊情況 (轉)Win32API
- 惠普印表機怎麼安裝?惠普印表機安裝使用教程
- GoldenGate不能把源庫的資料傳送到備庫,不能停止源庫傳送程式Go
- Win32常用API講解Win32API
- 使用 Oracle 資料探勘 APIOracleAPI
- 使用spring.cloud.stream來傳送kafka訊息,並根據某欄位將訊息傳送到固定partition上SpringCloudKafka
- 用live555將內網攝像機視訊推送到外網伺服器,附原始碼內網伺服器原始碼
- 使用LPD協議來共享印表機協議
- 將本地nuget包推送到Nexus
- 印表機不列印是怎麼回事 印表機不印表機的解決方法
- Win32 API 登錄檔類的編制以及使用 (轉)Win32API
- 資料傳輸 | 利用 DTLE 將 MySQL 資料同步到 DBLEMySql
- 愛爾蘭隱私保護機構將Facebook資料傳輸訴諸法庭
- w10印表機不能使用怎麼辦_win10印表機無法使用解決方法Win10
- 如何將高通量測序原始資料上傳到NCBI的SRA(The Sequence Read Archive)資料庫?Hive資料庫
- windows下目錄傳送到unix環境Windows
- 將本地 Docker 映象推送到阿里雲Docker阿里
- 常用Win32 API函式簡介Win32API函式
- Get All IE Info from win32 apiWin32API
- 印表機驅動程式無法使用怎麼解決 印表機驅動程式無法使用w10
- win10傳送到桌面快捷方式的方法_win10系統怎麼傳送到桌面快捷方式Win10
- python使用opencv播放視訊併傳送到串列埠,讓51顯示PythonOpenCV串列埠
- MySQL 自動備份併傳送到郵箱MySql
- 配置日誌logwarch 每天傳送到郵箱
- java呼叫印表機Java