delphi7中用fastreport frxreport1.PrepareReport;
frxreport1.PrintOptions.ShowDialog:=false;
frxReport1.PrintOptions.Printer := 'GP5890XIII'; //GP5890XIII是一台打印机的名字
frxreport1.Print; 程序中连接了好多打印机(串口、并口、网口、USB),问题是:
一旦某台打印机出现问题后怎么将 出现问题的打印任务换到另外一台打印机上打印出来
frxreport1.PrintOptions.ShowDialog:=false;
frxReport1.PrintOptions.Printer := 'GP5890XIII'; //GP5890XIII是一台打印机的名字
frxreport1.Print; 程序中连接了好多打印机(串口、并口、网口、USB),问题是:
一旦某台打印机出现问题后怎么将 出现问题的打印任务换到另外一台打印机上打印出来
解决方案 »
- Merry Christmas
- 小妹初学delphi,请各位大哥帮忙!问几个怎么关于播放音频的问题,先谢谢了!
- IdTCPServer接受事件里发送数据的问题!菜鸟提问!
- 如何将excel表中的数据,取出来,导入到SQL Server 2000数据库中去!
- 怎么样删除某个路径下的所有文件?
- Tadoconnection.connectionstring 能连局域网上某台机子上的 sql server 数据库吗?
- 我的问题又菜又多啊:::鼠标,键盘模拟问题!!
- 如何动态改变TMaskEdit控件的EditMask属性?
- delphi程序问题,请高手指教
- 请问如何获取文件默认打开方式的小图标?
- Web视频监控中,视频压缩传输和OCX内存问题
- 发个帖子看看
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Printers, WinSpool, Dialogs, StdCtrls;
type TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var
Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
function PrinterStatusText(Status: Integer): String;
begin
case Status of 0:
Result := 'Waiting';
JOB_STATUS_PAUSED: Result:= 'Paused';
JOB_STATUS_ERROR: Result:= 'Error';
JOB_STATUS_DELETING: Result := 'Deleting';
JOB_STATUS_SPOOLING:Result := 'Spooling';
JOB_STATUS_PRINTING: Result := 'Printing';
JOB_STATUS_OFFLINE:Result := 'Offline';
JOB_STATUS_PAPEROUT: Result := 'Paper Out';
JOB_STATUS_PRINTED: Result := 'Printed';
JOB_STATUS_DELETED: Result := 'Deleted';
JOB_STATUS_BLOCKED_DEVQ: Result := 'Blocked';
JOB_STATUS_USER_INTERVENTION:Result := 'User Intervention';
JOB_STATUS_RESTART:Result := 'Restart';
else Result := 'Status ' + IntToStr(Status);
end;
end;
// procedure GetJobs(PrinterName: String; JobList: TStrings);
const
InfoLevel = 1;
FirstJob = 0;
LastJob = 19;
var
Jobs: array [FirstJob..LastJob] of TJobInfo1;
PrinterHandle, BytesNeeded, I, NumJobs:cardinal;// Integer;
begin
if OpenPrinter(PChar(PrinterName),PrinterHandle,nil) then
begin
if EnumJobs(PrinterHandle,FirstJob,LastJob+1,InfoLevel,@Jobs,SizeOf(Jobs),BytesNeeded,NumJobs) then
begin JobList.Clear;
for I := 0 to NumJobs-1 do
with Jobs[I] do
JobList.Add(Format('%s(%s)',[StrPas(pDocument),PrinterStatusText(Status)]));
end;
ClosePrinter(PrinterHandle);
end;
end;
begin GetJobs('hp deskjet 3500 series',Memo1.Lines);
end;
end.
當打印任務序列執行完成後,一定要清除它的打印任務序列;一般會以下方法:
1.EndDocPrinter
但很多时候不一定有效,最好还是找服务提供商获取sdk2.如果内容已到打印机缓存里,就只有调整用打印机驱动的清除任务DLL了
WINAPI仅能清除内存缓冲的内容