PrintDialog 可以选择打印机, 如何将选中的打印机设置为windows 系统的缺省打印机, 谢谢!
解决方案 »
- 如何把桌面图标的位置保存起来?还原?
- 学习数据库遇到的两个问题!
- 开多个窗口后怎么让每个窗口都在任务栏上有个显示(就像MSN和多个人同时聊天时任务栏显示多个窗口一样)(急急急,回贴就给分啊,要多少吐血
- 有没有可能根据密文知道是采用了那一种的加密算法???
- 自己做了一个Oracle数据库备份软件,装有Oracle数据库的朋友可以试一下,提提意见!谢谢。
- 请问如何快速的赚到一个手提电脑的钱!
- viavoice 中的中文TTS怎么用?
- TFormTransitions组件是什么组件?
- 开工大半了给别人,心有不服!
- DELPHI中的钩子是什么?
- "Socket Error 10061" : 怎么解决?(以前的相关贴子打不开)谢谢
- 求串口通信的资料。
窗体上有个TComBox,命名为cb1
窗体名为Form1procedure 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;
***********************
uses printers;
procedure SetDefaultPrinter(const printerindex:integer);
Var
FHandle : THandle;
HPrt : THandle;
PrtInfo5: PPrinterInfo5;
FDevice: array[0..79] of char;
FDriver: array[0..79] of char;
FPort: array[0..79] of char;begin {printerindex为选中打印机的索引,如果使用打印机名称,则此句可忽略}
Printer.PrinterIndex := printerindex; Printer.GetPrinter (FDevice, FDriver, FPort, FHandle);
OpenPrinter(FDevice, HPrt, nil);
if HPrt = 0 then
raise(Exception.Create('不能打开打印机'));
try
PrtInfo5 := GetPrinterInfo5(HPrt);
PrtInfo5.Attributes := PrtInfo5.Attributes +
PRINTER_ATTRIBUTE_DEFAULT;
SetPrinter(HPrt,5,PrtInfo5,PRINTER_CONTROL_SET_STATUS);
FreeMem(PrtInfo5);
finally
ClosePrinter(HPrt);
end;end;