DELPHI写的用并口控制打印机直接打印的程序怎么在WINDOWS2003打不了呢? ( 积分: 50 )

  • 主题发起人 主题发起人 Spring_Thunder
  • 开始时间 开始时间
S

Spring_Thunder

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI写的用并口控制打印机直接打印的程序怎么在WINDOWS2003打不了呢?
同样的程序在WINDOWS2000下什么问题都没有,可到了2003下打印机却没有
任何反应,这是怎么回事啊?
 
DELPHI写的用并口控制打印机直接打印的程序怎么在WINDOWS2003打不了呢?
同样的程序在WINDOWS2000下什么问题都没有,可到了2003下打印机却没有
任何反应,这是怎么回事啊?
 
难道没人知道吗?
 
2003的API可能不一样了。
这个在WIN98中写好后在2000或XP中不能用一样
 
Var
F:TextFile;
PDStr:string;
begin
try
PDStr:=’Delphi Printer on LPT1’+chr(10);
AssignFile(F, 'LPT1');
Rewrite(F);
Write(F, PDStr);
CloseFile(F);
Except
Messagedlg('数据发送失败!',mterror,[mbok],0);
end;
end;

是这样写的
在2000下是正常的,在98、95下也是正常的,XP下没试过,
2003下为什么就不行呢?应该怎么写才可以呢?
 
没有人能帮下忙吗?
 
亲自试了,XP也没问题,Win2003下打印也一样正常,说明你的程序应该没问题的。
 
那应该是哪里的问题呢?我的操作系统有问题?
 
你改用另外的方式,调用驱动的winapi,设置为Gothrough方式,直接打印,利用windows的驱动,可以排队,同时支持并口和串口,对针式打印是用硬字库,速度很快。我有源代码在家中,不过手头上没有,改天贴上来。
 
to zhongs
谢谢,期待你的源代码[:)]
 
uses
Windows, SysUtils, WinSpool, Printers;
.....
constdo
CUMENT_NAME = 'Johnson';

// *****************************************************************************
// PrintText: 直接打印。 参数PrinterName为 打印机名,空为使用默认打印机
// *****************************************************************************
function PrintText(PrinterName, Text: PChar;
nCount: integer): Boolean;
var
BytesWritten: Cardinal;
hPrinter: THandle;
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDeviceMode: THandle;
do
cInfo: TDocInfo1;
begin
Result:= False;
if (PrinterName=nil) or (Length(PrinterName)=0) then
Printer.GetPrinter(Device, Driver, Port, hDeviceMode)
else
StrCopy(Device, PrinterName);
if not OpenPrinter(Device, hPrinter, nil) then
Exit;
do
cInfo.pDocName :=do
CUMENT_NAME;
do
cInfo.pOutputFile := nil;
do
cInfo.pDatatype := 'RAW';
if StartDocPrinter(hPrinter, 1, @DocInfo) = 0 then
begin
ClosePrinter(hPrinter);
Exit;
end;

Result:= WritePrinter(hPrinter, Text, nCount, BytesWritten);
EndDocPrinter(hPrinter);
ClosePrinter(hPrinter);
end;
 
TO Spring_Thunder: 老大, 问题帮你解决了, 还不结贴给分?
 
后退
顶部