printer.GetPrinter(ADevice,ADriver,APort,DeviceHandle); if DeviceHandle = 0 then begin Printer.PrinterIndex := Printer.PrinterIndex + 1; printer.GetPrinter(ADevice,ADriver,APort,DeviceHandle); end; if DeviceHandle = 0 then begin application.MessageBox('没有发现打印机','错误',MB_OK+MB_ICONERROR); exit; end;
打印代码
except
不存在
end;
上面有你想要的打印技术等..
D6版本的没有噢..
检查 Printer.Printers 可以知道当前系统安装哪些了打印机。
如果用 Quick Report, 检查 QRPrinter.Status 或
QRPrinter.PrinterOK 可知道打印机是否就绪。
if DeviceHandle = 0 then
begin
Printer.PrinterIndex := Printer.PrinterIndex + 1;
printer.GetPrinter(ADevice,ADriver,APort,DeviceHandle);
end;
if DeviceHandle = 0 then
begin
application.MessageBox('没有发现打印机','错误',MB_OK+MB_ICONERROR);
exit;
end;
上一次我在哪一个贴子上有发啊..
function tform1.PrinterStatusText(Status: Integer): ='PRINTER_STATUS_BUSY';
PRINTER_STATUS_DOOR_OPEN :result:='PRINTER_STATUS_DOOR_OPEN';
PRINTER_STATUS_ERROR :result:='PRINTER_STATUS_ERROR';
String;
begin
case status of
PRINTER_STATUS_BUSY :result:='PRINTER_STATUS_BUSY';
PRINTER_STATUS_DOOR_OPEN :result:='PRINTER_STATUS_DOOR_OPEN';
PRINTER_STATUS_INITIALIZING :result:='PRINTER_STATUS_INITIALIZING';
PRINTER_STATUS_IO_ACTIVE :result:='PRINTER_STATUS_IO_ACTIVE';
PRINTER_STATUS_MANUAL_FEED :PRINTER_STATUS_ERROR :result:='PRINTER_STATUS_ERROR';
PRINTER_STATUS_INITIALIZING :result:='PRINTER_STATUS_INITIALIZING';
PRINTER_STATUS_IO_ACTIVE :result:='PRINTER_STATUS_IO_ACTIVE';
PRINTER_STATUS_MANUAL_FEED :result:='PRINTER_STATUS_MANUAL_FEED';
PRINTER_STATUS_NO_TONER :result:='PRINTER_STATUS_NO_TONER';
result:='PRINTER_STATUS_MANUAL_FEED';
PRINTER_STATUS_NO_TONER :result:='PRINTER_STATUS_NO_TONER';
PRINTER_STATUS_NOT_AVAILABLE :result:='PRINTER_STATUS_NOT_AVAILABLE';
PRINTER_STATUS_OFFLINE :result:='PRINTER_STATUS_OFFLINE';
PRINTER_STATUS_OUT_OF_MEMORY :result:='PRINTER_STATUS_OUT_OF_MEMORY';
PRINTER_STATUS_OUTPUT_BIN_FULL :PRINTER_STATUS_NOT_AVAILABLE :result:='PRINTER_STATUS_NOT_AVAILABLE';
PRINTER_STATUS_OFFLINE :result:='PRINTER_STATUS_OFFLINE';
PRINTER_STATUS_OUT_OF_MEMORY :result:='PRINTER_STATUS_OUT_OF_MEMORY';
PRINTER_STATUS_OUTPUT_BIN_FULL :result:='PRINTER_STATUS_OUTPUT_BIN_FULL';
PRINTER_STATUS_PAGE_PUNT :result:='PRINTER_STATUS_PAGE_PUNT';result:='PRINTER_STATUS_OUTPUT_BIN_FULL';
PRINTER_STATUS_PAGE_PUNT :result:='PRINTER_STATUS_PAGE_PUNT';
PRINTER_STATUS_PAPER_JAM :result:='PRINTER_STATUS_PAPER_JAM';
PRINTER_STATUS_PAPER_JAM :result:='PRINTER_STATUS_PAPER_JAM';
PRINTER_STATUS_PAPER_OUT :result:='PRINTER_STATUS_PAPER_OUT';
PRINTER_STATUS_PAPER_PROBLEM : PRINTER_STATUS_PAPER_OUT :result:='PRINTER_STATUS_PAPER_OUT';
PRINTER_STATUS_PAPER_PROBLEM :result:='PRINTER_STATUS_PAPER_PROBLEM';
PRINTER_STATUS_PAUSED :result:='PRINTER_STATUS_PAUSED';
PRINTER_STATUS_PENDING_DELETION :result:='PRINTER_STATUS_PENDING_DELETION';
PRINTER_STATUS_PRINTING :result:='PRINTER_STATUS_PRINTING';
result:='PRINTER_STATUS_PAPER_PROBLEM';
PRINTER_STATUS_PAUSED :result:='PRINTER_STATUS_PAUSED';
PRINTER_STATUS_PENDING_DELETION :result:='PRINTER_STATUS_PENDING_DELETION';
PRINTER_STATUS_PRINTING :result:='PRINTER_STATUS_PRINTING';
PRINTER_STATUS_PROCESSING :result:='PRINTER_STATUS_PROCESSING';
PRINTER_STATUS_TONER_LOW :PRINTER_STATUS_PROCESSING :result:='PRINTER_STATUS_PROCESSING';
PRINTER_STATUS_TONER_LOW :result:='PRINTER_STATUS_TONER_LOW';
PRINTER_STATUS_USER_INTERVENTION :result:='PRINTER_STATUS_USER_INTERVENTION';
PRINTER_STATUS_WAITING :result:='PRINTER_STATUS_WAITING';
PRINTER_STATUS_WARMING_UP :result:='PRINTER_STATUS_WARMING_UP';
end;
result:='PRINTER_STATUS_TONER_LOW';
PRINTER_STATUS_USER_INTERVENTION :result:='PRINTER_STATUS_USER_INTERVENTION';
PRINTER_STATUS_WAITING :result:='PRINTER_STATUS_WAITING';
PRINTER_STATUS_WARMING_UP :result:='PRINTER_STATUS_WARMING_UP';
end;
end;所有的状态都在上面了..你自已搞吧..
prnhandle:thandle;
begin
if openprinter('Epson LQ-1600K',prnhandle,nil) then
showmessage('success')
else
showmessage('no printer');
end;