将数据直接发送到打印机

下面是一个将数据直接发送到打印机的示例:

记得在文件中加上#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")

时间: 2024-10-31 04:08:52

将数据直接发送到打印机的相关文章

解决网络不通数据只发送不接收

网络的畅通是表现在既有发送包,也有接收包,只有来去都畅通才正常.但是如果只有发送,却没有接收,碰到这样的故障到底又是怎么回事呢?在笔者短暂的两年网管生涯中,出现了几次这样的故障,但他们发生的原因又各有不同.今天笔者就把一些解决方法奉献给大家. 一般来说,出现这种故障的时候,网络连接都是都是好的,即不会出现红色的叉子图标.但这又只是一种表现的正常,因此我们入手的时候必须先从自身入手. 从自身入手的第一点就是检查出现该故障前有没有安装过什么软件,有没有改过什么设置,尤其是杀毒软件.防火墙这一类的软件

VC 控制台程序串口通讯,串口收到数据如何发送消息给主线程?

问题描述 VC 控制台程序串口通讯,串口收到数据如何发送消息给主线程? 用CSerialPort类实现串口通讯,该类在收到数据后会调用::sendmessage函数,该函数的第一个参数是窗口句柄,但是控制台没有窗口句柄,该怎么发送消息?main函数里怎么响应消息? 解决方案 sendmessage wm_copydata 解决方案二: 控制台程序可以调用http://blog.csdn.net/coredoor/article/details/8582001

数据接受-c#串口通信延迟问题,数据的发送和接受

问题描述 c#串口通信延迟问题,数据的发送和接受 在vs2010中调试运行,功能都完整,为什么在debug下运行exe文件.功能就会出现问题 自己认为是接受数据的时候发生了延迟. comm_DataReceived 接受代码: int n = serialPort1.BytesToRead; byte[] buf = new byte[n]; serialPort1.Read(buf, 0, n); buffer.AddRange(buf); if (!isDataReceived) { buf

java以webservice形式向发送远程数据,发送时出现重复数据,如何解决?

问题描述 java以webservice形式向发送远程数据,发送时出现重复数据,如何解决? 我是用java从本地数据库中(oracle)提取数据后,封装,发送给远程服务器,然后远程服务器会返回发送结果代码. 我在主表中的每条数据都有一个字段显示其发送次数,还有一个字段显示发送结果.再有一张结果表,专门存储每条数据每次发送的结果和错误原因等详细信息.两张表是一对多关系.主表对每条数据是唯一的,当发送完,次数字段会增加1,发送结果也会更新 最新一次数据发送的结果.平时数据量小的时候完全没有问题,比如

求大神解答如何用接口请求数据和发送数据?

问题描述 求大神解答如何用接口请求数据和发送数据? 新人求demo!求大神解答如何用接口请求数据和发送数据?求大神解答如何用接口请求数据和发送数据?求大神解答如何用接口请求数据和发送数据? 解决方案 可以看一下这个例子<安卓接口请求实例>http://www.mamicode.com/info-detail-515944.html 解决方案二: 讲道理一般是用Apache的httpClient,代理jdk自带的Url ,

线程-Ble发送数据,发送不及时

问题描述 Ble发送数据,发送不及时 需要200毫秒间隔,不停向下位机发送数据. 我的线程打印,却是是隔了200毫秒,发送一次,writeCharacteristic返回也是true. 但是串口调试助手显示,是间隔好几百秒(不固定),才一次收到 几条数据(不固定,有时是1条.有时3条.4条). 我发送端,设置了发送类型为 write_type_no_response, 也试了default,都不理想 ios端测试, 串口上是很均匀的 200毫秒 一条,所以硬件是没问题. 求助 . 求助,问题应该

android-人数统计设备的数据能发送给手机app吗?

问题描述 人数统计设备的数据能发送给手机app吗? 有没有这样一种可能,把人数统计系统的数据发送给手机app,用什么方法能让人数统计的硬件和app联系起来? 解决方案 如果设备和手机在同一个子网(局域网)中,可以用socket(前提是设备具备以太网卡和网络功能,同时是可编程的),如果不能满足,则用一个服务器中转,设备把数据发送到服务器,APP访问服务器获取数据

建立连接时无法将数据包发送给任意主机,帮忙看下代码,看怎样可以建立起通讯关系。我在调试是总是出错!

问题描述 voidSendData(byte[]data){try{IPAddressips=IPAddress.Parse(ControlIp);//("192.168.1.1");192.168.10.1IPEndPointipe=newIPEndPoint(ips,int.Parse(Port));//把ip和端口转化为IPEndPoint实例;1376UdpClientc=newUdpClient(23456);//创建一个Socketc.Connect(ipe);//连接到服

编写Socket客户端和服务器程序,客户端读取本地文件的数据,发送到服务器,服务器接收并存储到文件中。

问题描述 2.编写Socket客户端和服务器程序,客户端读取本地文件的数据,发送到服务器,服务器接收并存储到文件中.消息格式:字段长度(单位字节)内容--------------------------------------------------------------------len8整个消息长度,不包括这4个字节,类型为longfile_name_length1文件名长度,bytefile_namefile_name_length文件名,Stringdata_length8文件数据长度