用WINDOWS的API,Createfile .writefile 的方法.打印机没反应 ( 积分: 100 )

  • 主题发起人 主题发起人 大大懒虫
  • 开始时间 开始时间

大大懒虫

Unregistered / Unconfirmed
GUEST, unregistred user!
我写的程序如下:
buffersize:dword;
hPrnFile : THandle;
begin
hPrnFile := CreateFile('LPT1',GENERIC_WRITE,0,nil,file_flag_overlapped,0,0);
buffersize := 4096;
WriteFile(hPrnFile,pchar('fgdfgdfg')^,8,buffersize,nil);
CloseHandle(hPrnFile);
不知道是那里的问题.打印机就是没反应.(在WIN2000下)
 
我写的程序如下:
buffersize:dword;
hPrnFile : THandle;
begin
hPrnFile := CreateFile('LPT1',GENERIC_WRITE,0,nil,file_flag_overlapped,0,0);
buffersize := 4096;
WriteFile(hPrnFile,pchar('fgdfgdfg')^,8,buffersize,nil);
CloseHandle(hPrnFile);
不知道是那里的问题.打印机就是没反应.(在WIN2000下)
 
就用Printer类打好了,否则POS的话建议用SPCOMM控制
 
用winapi 的方法:
添好一行到STRING 中;printstring(s:string);
再用prnlf(no:cardinal);
换行(NO:换行数);
直到所有行打完
//----------------------------------回车、换行-------
procedure prnlf(no:cardinal);
var i:cardinal;
begin
for i:=1 to nodo
begin
printstring(chr(13));
printstring(chr(10));
end;
end;
//----------------------------------
procedure printstring(s:string);
type
tdocinfor=record
pdocname:pchar;
poutputfile:pchar;
pdatatype:pchar;
end;

var handle:Thandle;
N:DWORD;
do
cInfo1:TDOCINFOR;
prtname:string;
begin
prtname:= printer.Printers[printer.printerIndex];
if not openPrinter(pchar(prtname),handle,nil) then
begin
showmessage('打印机错误:'+INTTOstr(getlasterror));
exit;
end;
withdo
cinfo1do
begin
pdocname:=pchar('testdo
c');
poutputfile:=nil;
pdatatype:='RAW';
end;
startdocprinter(handle,1, @docinfo1);
startpageprinter(handle);
writeprinter(handle,pchar(s),length(s),N);
endpageprinter(handle);
enddocprinter(handle);

closeprinter(handle);
end;
 
我想我要用WRITEFILE的方法和别人一致。至于楼上的我在试。
 
CreateFile后要通过GetComState等到DCB,然后通过SetComState把相关参数设置进去,再writefile
 
SPComm好像是针对串口的吧
hPrnFile := CreateFile('LPT1',GENERIC_WRITE,0,nil,file_flag_overlapped,0,0);
不知道需要不需要PChar一下PChar('LPT1')
可以在hPrnFile := CreateFile('LPT1',GENERIC_WRITE,0,nil,file_flag_overlapped,0,0);
后面添加一个GetLastError,后面的几行也可以添加,GetLastError,把值取出来,就能断定是哪里错了
另外参考
http://www.delphibbs.com/delphibbs/dispq.asp?LID=193543
标题是: 用字符方式打印,出100分 (100分)
http://www.delphibbs.com/delphibbs/dispq.asp?LID=1554829
标题是: 怎么调用CreateFile打开并口进行读写? (50分)
http://www.delphibbs.com/delphibbs/dispq.asp?LID=1417751
标题是: 并口操作问题--送分送分:) (250分)
 
多人接受答案了。
 
今天,第一次来大富翁,来宝地学习一下,楼主不会怪我吧
 
大家有没有delphi编写的打印机驱动程序,有的话可以给小弟一看,让我也见识一下。谢谢了。请给发email:jdianmin9999@163.com
 
后退
顶部