非高手莫要进来

武稀松 2002-03-25 09:59:17
我有3个打印机设备,如何设置默认打印机?请给出例子。SetPrinter这个API如何使用
...全文
45 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
武稀松 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
出什么错,在哪一句出错?
  • 打赏
  • 举报
回复
相关推荐
发帖
Delphi

5123

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
帖子事件
创建了帖子
2002-03-25 09:59
社区公告
暂无公告