程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 將數據直接發送到打印機

將數據直接發送到打印機

編輯:關於C++

下面是一個將數據直接發送到打印機的示例:

記得在文件中加上#include winspool.h

bool Print(char* szPrinterName, char* szBuffer)// szBuffer是我們希望發送到打印機的數據緩沖
{
HANDLE hPrinter; //打印機句柄
int iLen = strlen(szBuffer);// 發送數據的長度
DWORD dwWritten; // 已經向打印機寫了多少
if(OpenPrinter(szPrinterName, &hPrinter, NULL))
//Open打印機並賦給一個句柄(已經保存在hPrinter)
{
DOC_INFO_1 Info;//文檔信息
memset(&Info, 0, sizeof(Info));
Info.pDocName = "My PrintJob";
//文檔名(which is shown in the PrintManager)
Info.pOutputFile = NULL;
//不須要向一個文件寫,設為NULL
Info.pDatatype = "RAW";
//數據以RAW格式發送(Win9x和WinNT都支持RAW和EMF格式,WinNT還支持TEXT格式
if(!StartDocPrinter(hPrinter, 1, (LPBYTE)&Info))//文檔開始
return false;
// 告訴打印機開始新頁
StartPagePrinter(hPrinter);
// 向打印機寫數據
if(!WritePrinter(hPrinter, szBuffer, iLen, &dwWritten))
{
//當發送數據時出現錯誤
//用最後的錯誤指出發生了什麼錯誤
}
EndPagePrinter(hPrinter);//告訴打印機已經完成當前頁
if(!EndDocPrinter(hPrinter))//文檔結束
return false;
ClosePrinter(hPrinter);//關閉打印機
return true;
}
else
{
return false;
}
}

假如你的打印機直接與計算機相連(LPT1-LPT3)或者影射為網絡打印機,那你就可以直接用fopen函數來實現。

eg. fopen("lpt1", "wt") 或 fopen("\\\\MainServer\\MatrixPrinter", "wt")

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved