声明:非用于获取他人信息,软件用于公共行业合法用途。
目的:截取打印机内容并保存为图片遇到的难点:
  无法获取到数据内容(内容存为图片网上貌视代码不少,可能不会有太大问题)1.查了网上相关的,有人说读取.spl文件,但是有的驱动不生成这个文件,还有好多驱动生成的该文件大小等于   0. 另获取该文件需要HOOK什么API吗?(不想做成在驱动属性上选中保留.spl的样子)
2.另外自己乱HOOK了一下 EndDocPrinter并用messageBox断住,然后另外一个程序去枚举打印机,使用ReadPrinter读取内容的时候总是失败。请高手指点一下怎么实现这个功能。不要串口和驱动层的。万分感激!

解决方案 »

  1.   

    hook StartDoc怎么样?
    试试能不能从它的第一个参数的HDC中取到
      

  2.   

    谢谢楼上的,能说详细点吗?怎么从HDC取到打印内容?
    弄了一下午得到一点测试结果:经过测试 对于少量虚拟打印机驱动能使用ReadPrinter读取到WMF头,里面应该有数据信息了。
    但是大部分都读取失败。
      

  3.   

    我另外一个帖子中已经能从上层驱动获取到数据。
    http://bbs.csdn.net/topics/390423628
    该帖无人顶,没法结贴但是获取的都是RAW格式的,很少有生成EMF格式的,EMF格式的容易处理,但是RAW格式的好像无解呀。
    对于WPF类型的程序 打印的时候走XPS流程,也就是不使用GDI打印了,上层驱动也无法获取内容。
    这个东西没做出来,基本到此为止吧,以后有空或者有线索了再继续。
    希望能对某些人产生帮助。
    更希望高手们空了来此贴指导一下。
    或者有对这方面有兴趣的朋友共同研究
      

  4.   

    恭喜楼主。RAW能转化成EMF吗?
      

  5.   

    在新浪上看到如此回答:
    Raw数据可以直接打印或转成SPOOL文件。Raw格式的SPOOL文件是和设备相关的。
    EMF:Enhanced metafiles用于大大缩减应用程序从开始打印请求到OS将控制返回给应用程序。该格式的好处是能快速生成SPOOL文件 但是没搜索到别的相关的信息。楼上的知道怎么弄吗?我对图像处理 DC等不大熟悉。
      

  6.   

    RAW是不是就是BMP呀? 还是 要怎么做?跟相机的RAW格式是一样吗?
      

  7.   

    RAW是不是就是BMP呀这个怎么是一样的哪?raw这个是YUV格式的,你的需要转换才能生成BMP
    网上有转换格式,,你找下
      

  8.   

    http://academy.fengniao.com/76/765563.html