本机有两台打印机,一台本地打印机,一台远程打印服务器,打印是自动输出,有时输出本地打印机,有时输出远程打印机。怎么实现,谢谢各位大虾指点迷津!

解决方案 »

  1.   

    TPrintDialog部件显示一打印对话框
      

  2.   

    ...get / set the default printer? 
     
     uses 
      Printers, Messages; function GetDefaultPrinter: string; 
    var 
      ResStr: array[0..255] of Char; 
    begin 
      GetProfileString('Windows', 'device', '', ResStr, 255); 
      Result := StrPas(ResStr); 
    end; procedure SetDefaultPrinter1(NewDefPrinter: string); 
    var 
      ResStr: array[0..255] of Char; 
    begin 
      StrPCopy(ResStr, NewdefPrinter); 
      WriteProfileString('windows', 'device', ResStr); 
      StrCopy(ResStr, 'windows'); 
      SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@ResStr)); 
    end; procedure SetDefaultPrinter2(PrinterName: string); 
    var 
      I: Integer; 
      Device: PChar; 
      Driver: PChar; 
      Port: PChar; 
      HdeviceMode: THandle; 
      aPrinter: TPrinter; 
    begin 
      Printer.PrinterIndex := -1; 
      GetMem(Device, 255); 
      GetMem(Driver, 255); 
      GetMem(Port, 255); 
      aPrinter := TPrinter.Create; 
      try 
        for I := 0 to Printer.Printers.Count - 1 do 
        begin 
          if Printer.Printers = PrinterName then 
          begin 
            aprinter.PrinterIndex := i; 
            aPrinter.getprinter(device, driver, port, HdeviceMode); 
            StrCat(Device, ','); 
            StrCat(Device, Driver); 
            StrCat(Device, Port); 
            WriteProfileString('windows', 'device', Device); 
            StrCopy(Device, 'windows'); 
            SendMessage(HWND_BROADCAST, WM_WININICHANGE, 
              0, Longint(@Device)); 
          end; 
        end; 
      finally 
        aPrinter.Free; 
      end; 
      FreeMem(Device, 255); 
      FreeMem(Driver, 255); 
      FreeMem(Port, 255); 
    end; procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      label1.Caption := GetDefaultPrinter2; 
    end; //Fill the combobox with all available printers 
    procedure TForm1.FormCreate(Sender: TObject); 
    begin 
      Combobox1.Items.Clear; 
      Combobox1.Items.AddStrings(Printer.Printers); 
    end; //Set the selected printer in the combobox as default printer 
    procedure TForm1.Button2Click(Sender: TObject); 
    begin 
      SetDefaultPrinter(Combobox1.Text); 
    end;