用字符方式打印,出100分(100分)

  • 主题发起人 主题发起人 laqo
  • 开始时间 开始时间
L

laqo

Unregistered / Unconfirmed
GUEST, unregistred user!
大家或许都知道打印机打印方式有两种:字符方式打印和图形方式打印,Windows中打印文字和图形都使用图形方式打印。我要用的打印机只用
来打印字符,而在图形方式下,打印速度很慢。请教怎样在Windows中
使用字符方式打印。
 
前面很多这类东西了

CreateFile 打开 lpt1
WriteFile 写lpt1 端口
 
用Delphi

MyFile:TextFile;

begin

AssignPrn(MyFile);
Rewrite(MyFile);
Writeln(MyFile,'Test,Test,Test........');
{.... more WriteLn Write}
System.CloseFile(Myfile);
end;
 
记得Dos下实现很方便,如果是纯文本的话,

typedo
c.txt >> prn

所以干脆就用WinExec调用Dos命令好了。
 
typedo
c.txt >> prn
or
copydo
c.txt >> prn

:)
 
沈前卫说的,我试了之后发现,其实仍是使用图形打印方式.并非使用字符方式打印;
我并不想使用DOS的重定向,另外应为Copydo
c.txt prn,无>;使用CreateFile
的方法,能否给一个具体的例子,预谢了,另外是使用CreateFile还是使用
OpenFile?我准备把分给较圆满解答的人。
另外,给其他对此问题感兴趣的人,我已经找到用assign(textfile,'lpt1')可以。
 
Pipi. j叫你给示例呢! {B-)
 
1、谁说 AssignPrn 是图形打印?没有的事。(除非你又发打印机的图形命令打图形)
AssignPrn 和 assignfile(textfile,'prn') 是一回事

CreateFile可以打开通讯端口(并行、串行口),说起来复杂了.(OpenFile则不行)

还是AssignPrn最简单
 
又:有没有更通用的方法--如果是网络打印机、串口打印机等怎麽办?
 
先说网络打印机:

要将 //ACCOUNTING 服务器的共享打印机队列 LASER2 指定为设备名 LPT2:,请键入:

net use lpt2: //accounting/laser2 (是命令行,不是delphi函数)

AssignFile(f,'lpt2') //没实验过

 
AssignPrn 和 AssignFile(textfile,'lpt1')确实不同,如果使用打印机试一
下,就可以看出一个使用图形打印方式、一个使用字符打印方式。为避免出错,
我又试了一次。
对于CreateFile示例,就因为复杂才需要啊,对Pipi来说应该不算复杂,会者不
难吗。
 
AssignPrn 好象是图形的喔, printers.pas抄的:

{ AssignPrn - Assigns a Text variable to the currently selected printer. Any
Write or Writeln's going to that file variable will be written on the
printer using the Canvas property's font. A new page is automatically
started if a CR is encountered on (or a Writeln is written to) the last
line on the page. Closing the text file will imply a call to the
Printer.EndDoc method. Note: only one Text variable can be open on the
printer at a time. Opening a second will cause an exception.}

 
Pipi说的网络打印机的字符方式打印有问题。
 
var
n:DWORD;
s:string;
h:HANDLE;

h:=CreateFile('prn',GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0)

s:='1234567890'#13#10;

WriteFile(h,PChar(s) ,Length(s),@n,nil);
 
用CreateFile 就不如 AssignFile 好用了
 
网络的不知道报什么错?
 
Pipi这麽晚,还没打算睡呢?
准备撤了。
 
身体是革命的本钱,我也撤退了
 
如果是本地打印机,我前面已经解决,直接用int 17打印。
asm
mov ah, 00
mov al, Char
mov dx, 00 或01....
int 17h
end;

网络打印没有想过
 
int 17h ?
这能在win32 下运行吗?
 
后退
顶部