打印机

 

打印机信息

OpenPrinter (szDevice, &hPrint, NULL):得到打印机szDevice的句柄

PrinterProperties (hwnd, hPrint):打开打印机属性页,也可以用驱动提供的ExtDeviceMode或ExtDeveModePropSheet函数,但推荐这个。

ClosePrinter(hPrint)

GetDeviceCaps(hdcInfo,index):获取设备参数。RASTERCAPS返回打印机是否支持位块(bit-block)转换,在部分点阵、激光、喷墨打印机都支持,但绘图仪不支持,不支持的设备不能用以下GDI函数:CreateCompatibleDC,CreateCompatibleBitmap,PatBlt,BitBlt,StretchBlt,GrayString,DrawIcon,SetPixel,GetPixel,FloodFill,ExtFloodFill,FillRgn,FrameRgn,InvertRgn,PaintRgn,FillRect,FrameRect和InvertRect。HORZRES和VERTES返回水平和垂直像素数,返回的不是整个页面,而是可打印区域的像素

PrintDlg(&pd):pd是PRINTDLG结构体,打开打印参数设置对话框。

 

打印

CreateDC(NULL,szDeviceName,NULL,pInitData):pInitData一般也为NULL,szDeviceName是打印机名称,用EnumPrinters获得

StartDoc(hdcPrinter)

EndDoc(hdcPrinter):如果打印出错,不需要调用,系统自动重围打印机。

StartPage(hdcPrinter)

EndPage(hdcPrinter)

示例代码: 

 

取消打印

SetAbortProc(hdcPrinter,AbortProc):打印前(StartDoc前)必须用这个函数注册,AbortProc定义方式:BOOL CALLBACK AbortProc(HDC hdcPrn,int iCode)。在调用EndPage时,GDI模块会调用AbortProc,如果打印正常,iCode为0,如果要继续打印返回TRUE,取消打印返回FALSE,返回FALSE,EndPage并不认为是打印出错,而是打印完成。一个简单的AbortProc例子bUserAbort是全局变量,表示是否取消。hDlgPrint是一个模式对话框句柄。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
客户端安装个软件。负责监控该电脑的打印动作。并把内容转成图片储存。并将图片传送到服务器机器上,并将打印内容传到服务器上面. 解决方案: 1. 先用api打印函数连接到指定的打印机.再试着用枚举函数()获得打印作业信息.根据信息得知打印的内容,及当前的状态. 2. 获知内容,得知打印内容所在的位置,再某种方式将数据导在图片;再传到服务器上. 技术问题: 1. 打印枚举函数中找不到JOB_INFO_1 或 JOB_INFO_2结构的定义.(已解决) 2. 怎么样获得打印内容.是通过原本的驱动还是其它办法, 其它: 文件传给pdf打印机之前已经存成raw格式了,应该是从缓冲池中直接读取数据 接下去要完成的应该是怎么把raw格式读出来, 具我推测在获得打印信息的时候肯定有某个参数跟这个RAW格式是对应的.读出某个参数后才能再继续读取对RAW文件读取 具微软件网站显示,打印机的格式应该分成5种.raw的三种格式,text,emf(增强型图元文件) RAW格式指是最原始的数据 CreateDC("WINSPOOL", printer, null, ref dv);//用DISPLAY,是获取整个屏幕的设备场景;2、用WINSPOOL,则是访问打印驱动 返回新设备场景句柄,若出错则为零 EMFStreamPrintDocument 实力问题:就算获得句柄也没有办法接下去要做什么.(想错了) 目前状态:EMF图片取出来,监控也可以实现了.但监控的打印作业跟EMF图片不知道怎么产生关联.而且EMF图片读起出来比较慢. 取EMF图片本身spl就已经读入内存,但是有一种办法为了要读取图片只能将spl文件考出来再做成emf文件. 新的思路能不能将文件 shd文件中包含了一个作业ID RPC 命名管道 Server(服务器) Server 系统服务提供 RPC 支持以及文件、打印和命名管道在网络上的共享。Server 服务允许本地资源(如磁盘和打印机)共享,因此网络上的其他用户可以访问它们。它还允许在其他计算机上的应用程序与您计算机上的应用程序之间进行命名管道通信,这是用于 RPC 的。命名管道通信是为一个进程的输出(此输出用作另外一个进程的输入)而保留的内存。接受输入的进程不必是本地进程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值