我写程序时遇到个问题
请问如何取得打印机缓存里的数据,比如说
有个软件点打印,我的软件就能把要打印的数据取出来
怎么完成这功能呢,帮帮我,谢谢
------------------------------------
《CSDN论坛新助手 CSDN's forum Explorer》,支持最新改版论坛,回复、浏览“方便”,“快捷”!
下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe

解决方案 »

  1.   

    获取打印机队列里的信息(D6)
    -----------------------------------
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Printers, WinSpool;type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    var
            LPHandle: THandle; // 打印机句柄
            LPStrBuf: Array [0..256] of Char; // 打印机名称
            NoJobs: Word; // 希望获取的作业数
            s: LongWord; // Job_Info的字节数
            Job_Info: array[0..10] of JOB_INFO_1; // 打印队列信息
            cbNeeded: Cardinal;
            cReturned: Cardinal; // 返回的作业数
            ret: LongBool;
            I: Integer;
    begin
            LPStrBuf:='HP LaserJet 6L'; // 指定打印机名称
            // 打开打印机
            if (OpenPrinter(LPStrBuf,LPHandle,nil)=False) then
            begin
              MessageBox( Form1.Handle, '打开打印机失败。' , '信息' , MB_OK ) ;
              Exit; // 退出
            end ;
            s := Sizeof( Job_Info ) ;
            cbNeeded := 0 ;
            cReturned := 0 ;
            NoJobs := 10 ;
            ret := EnumJobs(LPHandle,
                    0 ,
                    NoJobs ,
                    1 ,
                    @Job_Info ,
                    s ,
                    cbNeeded ,
                    cReturned ) ;
            // 显示打印队列信息
            Memo1.Lines.Add( '共有打印任务:' + IntToStr(cReturned)+' 个。' );        for I:=0 to cReturned-1 do
            Memo1.Lines.Add( '第' + IntToStr(I+1)+' 个打印任务有' + IntToStr( Job_Info[I].TotalPages )+' 页。' );
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Memo1.text := '';
    end;end.
      

  2.   

    1楼的回答取不到内容
    内容怎么取呢
    -------------------------------
    怎么取不到内容??@Job_Info 得到的是一个结构啊
    里面内容有
    typedef struct _JOB_INFO_1 {    // ji1  
        DWORD  JobId;  
        LPTSTR pPrinterName; //打印机名称
        LPTSTR pMachineName; //还可以取机器名称
        LPTSTR pUserName; 
        LPTSTR pDocument; //这里不是可以了吗?
        LPTSTR pDatatype; 
        LPTSTR pStatus; 
        DWORD  Status; 
        DWORD  Priority; 
        DWORD  Position; 
        DWORD  TotalPages; 
        DWORD  PagesPrinted; 
        SYSTEMTIME Submitted; 
    } JOB_INFO_1; 
      

  3.   

    Showmessage(STRPAS(Job_Info[I].Ducument))//你看看行了吗?
      

  4.   

    job_info[i].Ducument
    取的是打印文件的名字,并不是打印文件的内容
    如何取到内容呢,我实在是想不通~~~~~~~~~~
    高手出来说说吧