请问能否在Delphi中打印Word文档,并指定从哪台打印机打印?打印的时候不显示Word文档,直接打印出来.

解决方案 »

  1.   

    设置默认打印机:
    procedure TprintAX.getPrint(var s: array of Char;PrinterName: String);
    var
          I: Integer;
          Device: array[0..255] of Char;
          Driver: array[0..255] of char;
          Port: array[0..255] of Char;
          hDeviceMode: THandle;
    begin
          for I := 0 to Printer.Printers.Count - 1 do
          begin
                if (Printer.Printers.Strings[I] = PrinterName) then
                begin
                    Printer.PrinterIndex := I;
                    Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
                    StrCopy (s, Device);
                    StrCat (s, ',');
                    StrCat (s, Driver);
                    StrCat (s, ',');
                    StrCat (s, Port);
                end;
          end;
    end;//接收注册表中的名称,取得打印机名称为默认打印机
    procedure TprintAX.setdefault(const zhuceName: WideString);
    var
        Result: String;
        registertemp : tregistry;
        s: array[0..255] of Char;
    begin
        registertemp := tregistry.create;
           with registertemp do
           begin
               rootkey:=HKEY_CURRENT_USER;
               if openkey('\SOFTWARE\tbz\print',true) then
               begin
                   if valueexists(zhuceName) then
                      Result:=Readstring(zhuceName)
                   else
                       Result:='';
               end;
                closekey;
                free;
           end;
          if Result='' then
          begin
              Application.MessageBox('请进行打印设置!', '提示', mb_iconinformation);
              ComboBox2.Text := Result;
          end
          else
          begin
              getPrint(s,Result);
              WriteProfileString ('windows', 'device', s);
              StrCopy (s, 'windows');
              SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@s));
          end;
    end;
      

  2.   

    在Delphi中要想打印Word文档,肯定要调用word的自动化对象了,就好像处理它的宏一样.