窗体上有个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;

解决方案 »

  1.   

    up 
    我用的系统是Win2000,这样做行吗?
      

  2.   

    2k系统中可以这样的,不知道98是不是可以!
    在窗体中加入combobox和两个button
    你自己TRY!
    我测试通过!procedure TForm1.Button1Click(Sender: TObject);
    begin
      ComboBox1.Items := Printer.Printers; {populates ComboBox}
      ComboBox1.ItemIndex := Printer.PrinterIndex; {sets display to current printer}
    end;procedure TForm1.Button2Click(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;