如何使用printer对像来使用多台打印机 (100分)

  • 主题发起人 主题发起人 whtsuperant
  • 开始时间 开始时间
W

whtsuperant

Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样的
我目前使用网络打印机(有两台)
我设其中一台为:默认打印机
能正常打印机
现在需要在一段程序中:
先用第一台打印机打印一部分内容
然后再用另一台打印机打印一部分内容
怎么办呢?
我目前只会用printer使用默认打印机来打印
 
很着急呀,请各位大虾帮助
 
给你一个设置打印机的函数:
function SetCurPrinter(sIndex: string): Boolean;
var
Device: array[0..255] of Char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
s : array[0..255] of Char;
hDeviceMode: THandle;
I: Integer;
begin
for I := 0 to Printer.Printers.Count - 1do
if Printer.Printers.Strings = sIndex then
begin
Printer.PrinterIndex := I;
Break;
end;
Printer.GetPrinter (Device, Driver, Port, hDeviceMode);
StrCopy (s, Device);
StrCat (s, ',');
StrCat (s, Driver);
StrCat (s, ',');
StrCat (s, Port);
WriteProfileString ('windows', 'device', s);
StrCopy (s, 'windows');
SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@s));
end;
例如,两台打印机名称为A和B,其端口分别为Port1和Port2,然后:
SetCurPrinter('A on Port1:');
Printer.Print;//打印一部分内容
SetCurPrinter('B on Port2:');
Printer.Print;//打印另一部分内容
 
我试试,如果行我就给分
 
如果有新的办法,请大家多多发言!
 
请问还有没有别的方法?
c~c的方法不太适合因我我还使用共享打印机,而且还要用端口号
 
如果你是DOS文本打印的话,即用 AssignFile(File,端口) 函数指向打印机,而且打印机
是针式打印机,那么这个问题就很好解决,比如你要打印到网络上的某个打印机,你只要
找到这台打印机的共享名,打印时只要
AssignFile(File,'//打印机所在计算机名称/打印机共享名')
然后 Writeln('字符串'),既可以打印了,你还要指向另外一台打印机,只要关闭这台,
再指向另外一台打印机就可以打印了,而且这样的方法有个好处就是不会多走纸。
 
to fxWSY
请问你有例子吗???300分也没问题,请帮帮忙,很急的.
to All
请大家帮忙想想办法,先谢了~
呵呵,我和楼主是一起的~
 
printer.printers.count可以得到打印机数 printer.printers可以得到打印机列表 printer.printerINDEX可以设当前打印机 printer.printerINDEX:=-1可以恢复默认打印机
 
To:fxWSY
我在win2000下一开始能用这个方法,后来不知道为什么就不行了,打印机没反映
改成printer后可以用,但是我想在不改变默认打印机的情况下同时使用两个打印机
同时我的打印机名称要存在数据库的一个表里
 
在tprinter中就可以设置
 
可以将所有打印机列出来,由用户选择使用哪一个打印机。
 
多人接受答案了。
 
后退
顶部