非高手莫要进来

武稀松 2002-03-25 09:59:17
我有3个打印机设备,如何设置默认打印机?请给出例子。SetPrinter这个API如何使用
...全文
64 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
武稀松 2002-03-25
  • 打赏
  • 举报
回复
to prometheusphinx(白日梦)
我运行这段程序会出错?!
武稀松 2002-03-25
  • 打赏
  • 举报
回复
nkzgj(和曦) 这个例子我也有,在MyBase中查到的。但是不好使
prometheusphinx 2002-03-25
  • 打赏
  • 举报
回复
WIN9X中可以这样
procedure TForm1.Button1Click(Sender: TObject);
var
hPrinter: THandle;
dwSize: DWORD;
pi: PRINTER_INFO_2;
begin
if OpenPrinter('PrinterName', hPrinter, nil) then
begin
GetPrinter(hPrinter, 2, @pi, 0, @dwSize);
GetPrinter(hPrinter, 2, @pi, dwSize, @dwSize);
pi.Attributes := PRINTER_ATTRIBUTE_DEFAULT;
SetPrinter(hPrinter, 2, @pi, 0);
ClosePrinter(hPrinter);
end;
end;
但是NT应该象 nkzgj(和曦) 那样。
nkzgj 2002-03-25
  • 打赏
  • 举报
回复

用修改WIN.INI文件中Device项的方法
举个例子:
procedure TMainForm.cbPrintersChange(Sender:TObject);
var
IniFile:TInifile;
TempStr1,TempStr2:String;
begin
with Printer do
begin
PrinterIndex:=cbPrinters.ItemIndex;//cbPrinters:TCombobox
TemStr1:=Printers[PrinterIndex];
System.Delete(TempStr1,Pos('on',TempStr1),Length(TempStr1));
IniFile:=TIniFile.Create('WIN.INI');
try
TempStr2:=IniFile.ReadString('Devices',TempStr1,'');
Inifile.WriteString('Windows','Device',TempStr1+''+TempStr2);
finally
IniFile.Free;
end;
end;
lblPrinter.Caption:=Printer.Printers[Printer.PrinterIndex];//lblPrinter:TLabel
end;
武稀松 2002-03-25
  • 打赏
  • 举报
回复
to prometheusphinx(白日梦) 能举个例子吗?我太笨了,还是不会用。
ihihonline 2002-03-25
  • 打赏
  • 举报
回复
晕~~~~~~~~~~
有直接的打印函数;
可以直接调用获得默认的打印机;

先获得所有打印机,在指定默认的打印机;
delphi5开发人员指南上边有的;
prometheusphinx 2002-03-25
  • 打赏
  • 举报
回复
先OpenPrinter然后用GetPrinter获取Printer的信息,level用2,结构自然就是PRINTER_INFO_2,然后将结构中的Attribute设为PRINTER_ATTRIBUTE_DEFAULT就可以SetPrinter了。
yangkunjie 2002-03-25
  • 打赏
  • 举报
回复
需要那么复杂吗?程序中不能增加打印机设置吗?
prometheusphinx 2002-03-25
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
hPrinter: THandle;
dwSize: DWORD;
pi: PPrinterInfo2;
begin
if OpenPrinter('Epson ActionLaser 1600', hPrinter, nil) then
begin
GetPrinter(hPrinter, 2, nil, 0, @dwSize);
try
GetMem(pi, dwSize);
try
GetPrinter(hPrinter, 2, pi, dwSize, @dwSize);
pi^.Attributes := PRINTER_ATTRIBUTE_DEFAULT;
SetPrinter(hPrinter, 2, pi, 0);
finally
FreeMem(pi);
end;
finally
ClosePrinter(hPrinter);
end;
end;
end;
prometheusphinx 2002-03-25
  • 打赏
  • 举报
回复
出什么错,在哪一句出错?

5,388

社区成员

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

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