怎样设置默认打印机

joyou 2002-07-30 01:08:48
在一台机器上可以连接多个打印机,在需要打印时,要打印到不同的打印机上:
如:报表A打印到HP LaserJet 6L上,用A4纸;
报表B打印到EPSON LQ1600K上,用连续纸;
因为打印量较多,不想手工选择打印机,想直接打印到相应的打印机上,怎样设置?
(在打印时将对应打印机变为默认打印机,打印后恢复原来的默认打印机)
...全文
2780 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
funboy88 2002-08-21
  • 打赏
  • 举报
回复
我上面的方法是在2K NT下更改注册表的
你自己试下哟,我下午遇到同样的这个问题,现在解决了!
s_cube 2002-08-21
  • 打赏
  • 举报
回复
Tprinter.printers.count可以得到打印机数
Tprinter.printers可以得到打印机列表
Tprinter.printerINDEX可以设当前打印机
Tprinter.printerINDEX:=-1可以恢复默认打印机
del_c_sharp 2002-08-21
  • 打赏
  • 举报
回复
up!
funboy88 2002-08-21
  • 打赏
  • 举报
回复
在窗体中加入combobox和两个button
你自己TRY!
我测试通过!

procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.Items := Printer.Printers; {populates ComboBox}
ComboBox1.ItemIndex := Printer.PrinterIndex; {sets display to current printer}
end;

procedure TForm1.Button2Click(Sender: TObject);
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;

begin

Printer.PrinterIndex := ComboBox1.ItemIndex;
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;
joyou 2002-07-31
  • 打赏
  • 举报
回复
怎么都是操作win.ini文件啊,这个方法在98下可以,在NT和2000下不行啊,
NT和2000的win.ini文件中没有关于默认打印机的设置,是在注册表中设置的。
stiwin 2002-07-30
  • 打赏
  • 举报
回复
如果你想要改变Windows的缺省打印机,你必须在Windows的WIN.INI中改变设备键。

发送一条 WM_WININICHANGE 消息:

var
strIni: array[0..MAX_PATH] of Char;
arrWindows: array[0..64] of Char;
begin
GetWindowsDirectory(strIni, SizeOf(strIni));
StrCat(strIni, '\win.ini');
with TIniFile.Create(strIni) do
try
WriteString('windows', 'device', 'HP LaserJet 4 Plus,HPPCL5MS,LPT1:');
finally
Free;
end;

StrCopy(arrWindows, 'windows');
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@arrWindows));
end;
日总是我哥 2002-07-30
  • 打赏
  • 举报
回复
uses printers, IniFiles;

窗体上有个TComBox,命名为cb1
窗体名为Form1

procedure TForm1.FormCreate(Sender: TObject);
begin
cb1.items.assign(printer.printers);
end;

procedure TForm1.Button1Click(Sender: TObject);
var LPrinter:string;
PrinIniFile:Tinifile;
LStr:string;
begin
LStr:=printer.Printers[cb1.itemindex];
delete(Lstr,pos(' on ',Lstr),Length(LStr));
PrinIniFile:=TIniFile.Create('WIN.ini');
try
LPrinter:=PrinIniFile.ReadString('Devices',LStr,'');
PrinIniFile.writestring('windows','device',LStr+','+LPrinter);
finally
PrinIniFile.free;
end;
end;
Billy_Chen28 2002-07-30
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
WinIni : TIniFile;
WinIniFileName : array[0..MAX_PATH] of char;
s : array[0..64] of char;

begin
GetWindowsDirectory(WinIniFileName, sizeof(WinIniFileName));
StrCat(WinIniFileName, '\win.ini');
WinIni := TIniFile.Create(WinIniFileName);
try
WinIni.WriteString('windows',
'device',
'HP LaserJet Series II,HPPCL,LPT1:');
finally
WinIni.Free;
end;

StrCopy(S, 'windows');
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@S));
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧