我的打印机有多台台。 但是打印是有条件的,就是根据不同的条件,让不同的打印机去打印,为什么总是在默认打印机上打印呢,我在程序中更改默认打印机不成功,也不知为什么?原码如下,帮忙看看procedure TFrm_Main.Button1Click(Sender: TObject);
var
 i ,j : integer;
 p  : string;  Device: array[0..255] of Char;
  Driver: array[0..255] of char;
  Port: array[0..255] of char;
  s1 : array[0..255] of Char;
  hDeviceMode: THandle;
begin
    s := TStrings.Create;
    s := printer.Printers ;
    ADOD_printer.First;
    for j:= 0 to ADOD_printer.RecordCount -1 do    //这里循环取得打印机打印
    begin
        p := ADOD_printer.FieldByName('PrinterName').AsString; //该字段保存了计算机名
        printer.printerindex := Printer.Printers.IndexOf('p'); //p为打印机名
        adod_test.Close;
        adod_test.CommandText := 'select * from View_Printer where PrinterID = ' + Adod_printer.fieldByName('printerID').AsString;     //取得该打印机要打的内容
        adod_test.Open;
        adod_test.First;
 if not printer.Printing then                     //如果打印机没有工作,更改默认打印机
 begin
  Printer.GetPrinter (Device, Driver, Port, hDeviceMode);
  StrCopy (s1, Device);
  StrCat (s1, ',');
  StrCat (s1, Driver);
  StrCat (s1, ',');
  StrCat (s1, Port);
  WriteProfileString ('windows', 'device', s1);
  StrCopy (s1, 'windows');
  SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@s1));
end;
        if not adod_test.eof then printer.begindoc;  //开始设置打印内容
        i:=0;
        while not adod_test.eof do
        begin
           printer.canvas.textout(0,i*80,adod_test.FieldValues['GoodStylesName']);
           inc(i);
           if i = 50 then printer.newpage;
           adod_test.next;
        end;
        if printer.printing then printer.enddoc;
        ADOD_printer.Next;
    end;end;