我不大赞成用汇编,因为在NT和2000下无法使用,但找不出别的方法,API函数试过,搞不定。汇编的方法如下: //从并行端口读取打印机状态 function GetPrinterStatus:byte; asm MOV DX,$379; IN AL,DX; end; //获取打印机是否出错 function CheckPrinter:boolean; var temp:byte; begin temp:=GetPrinterStatus; Result:=not ( ((temp and $80)=0) //打印机忙 or ((temp and $20)<>0) //打印机缺纸 or ((temp and $10)=0) //打印机未联机 or ((temp and $08)=0) ); //打印机出错; end;
第一个试一试
uses printers;
var
f:TextFile;
begin
AssignPrn(f);
try
Rewrite(f);
writeln(f,'Print the output');
finally
CloseFile(f);
end;
end;
第二个不知道
2.打印机的检测要用API。用Printer只能作最简单的检测。
//从并行端口读取打印机状态
function GetPrinterStatus:byte;
asm
MOV DX,$379;
IN AL,DX;
end;
//获取打印机是否出错
function CheckPrinter:boolean;
var
temp:byte;
begin
temp:=GetPrinterStatus;
Result:=not ( ((temp and $80)=0) //打印机忙
or ((temp and $20)<>0) //打印机缺纸
or ((temp and $10)=0) //打印机未联机
or ((temp and $08)=0) ); //打印机出错;
end;
可以把打印机端口当成COM口一样的来操作,直接读写!