Hubdog的葵花宝典里面的。
This grabs the selected printer in a ComboBox and makes it the default
printer.
Use this on form create (or whatever)...
ComboBox1.Items := Printer.Printers;
{populates ComboBox}
ComboBox1.ItemIndex := Printer.PrinterIndex;
{sets display to current
printer}
then
, assuming you have a Button5...
procedure TForm1.Button5Click(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;