查找所有安装的打印机,并返回打印机安装序号
function TwsInfo.pfSetPrint(APrintName: String):integer;
var
j:integer;
begin
if Printer.Printers[Printer.PrinterIndex] <> APrintName then
//APrintName就是打印机名
begin
j:=0;
try
while Printer.Printers[j]<>APrintNamedo
begin
j:=j+1;
end;
//end of while
Result :=j;
except
ShowMessage(' 找不到 '+APrintName+' 打印机,请重新安装该打印机');
end;
//end of try
end //end of if
else
begin
Result := Printer.PrinterIndex;
end;
//ene of else
end;
然后如果是打印控件的话都有一个PrinterSettings.PrinterIndex属性,设定就可以了。
以下的设定默认打印机的程序,但是不推荐这样的方式。因为对其它程序不友善。
with Printerdo
begin
PrinterIndex:=cbPrinters.ItemIndex;//这个就看你用什么方式得到打印机的安装号了。这里是将所有打印机的安装号已经写入了一个ComboBox里。
TempStr1:=Printers[PrinterIndex];
System.Delete(TempStr1,Pos('on',TempStr1),Length(TempStr1));
IniFile:=TIniFile.Create('WIN.INI');
try
TempStr2:=IniFile.ReadString('Device',TempStr1,'');
IniFile.WriteString('windows','device',TempStr1+','+TempStr2);
StrCopy(S,'windows');
//SendMessage(HWND_BROADCAST,WM_WININICHANGE,0,LongInt(@S));
SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,LongInt(@S));
//一个是98的,一个是2000的。给所有窗口发送默认打印机已改变的消息。
finally
IniFile.Free;
end;
end;