我写程序时遇到个问题
请问如何取得打印机缓存里的数据,比如说
有个软件点打印,我的软件就能把要打印的数据取出来
怎么完成这功能呢,帮帮我,谢谢
------------------------------------
《CSDN论坛新助手 CSDN's forum Explorer》,支持最新改版论坛,回复、浏览“方便”,“快捷”!
下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe
请问如何取得打印机缓存里的数据,比如说
有个软件点打印,我的软件就能把要打印的数据取出来
怎么完成这功能呢,帮帮我,谢谢
------------------------------------
《CSDN论坛新助手 CSDN's forum Explorer》,支持最新改版论坛,回复、浏览“方便”,“快捷”!
下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe
-----------------------------------
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.
内容怎么取呢
-------------------------------
怎么取不到内容??@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;
取的是打印文件的名字,并不是打印文件的内容
如何取到内容呢,我实在是想不通~~~~~~~~~~
高手出来说说吧