在delphi 7中
ShellExecute(Handle, 'print', PChar('D:\2.DOC',nil , nil, SW_HIDE);能打印,就是它总把WORD也打开,还要出一个“正在打印第XX页 文档D:\2.DOC 位置 打印机名”能不能什么也不让他出直接打印啊?谢谢了。

解决方案 »

  1.   

    不要用ShellExecute这个函数,你用OLE对象,在Delphi中嵌入OLE对象,直接调用打印方法。
    你在网上搜一下在Delphi中如何使用OleContainer控件,相信会有收获!
      

  2.   

    OleContainer也不好整,我这个不单单是,DOC文件,还有别的格式。您有OleContainer打印的例子吗?
    OleContainer1.OleObject.Application.ActiveDocument.PrintPreview跟本不可用,OleContainer1.OleObject后面好象没有属性了。
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    ExcelApp:OleVariant;
    begin
     ExcelApp:=CreateOleObject('Excel.Application');
     ExcelApp.WorkBooks.Open( 'd:\1.xls' );
     ExcelApp.Visible := false;
     ExcelApp.ActiveWorkBook.Saved := True;
     ExcelApp.ActiveSheet.PrintOut;
     ExcelApp.Quit;
    end;这样写有问题吗?还是会出那个“正在打印第XX页 文档d:\1.xls 位置 打印机名”这是为什么?怎么才能把这个去了?因为我里要用服务调用,不能有这个对话框的。
      

  4.   

    我的机器上没有打印机,不方便给你测试,只能告诉你理论方法。出现“正在打印第XX页 文档d:\1.xls 位置 打印机名” 对话框,你可以换到该对话框的句柄,然后发送一个隐藏消息:ShowWindow(FindWindow(0,'窗口标题'),SW_HIDE)
      

  5.   

    支持用OLE这样操作起来也挺方便的
      

  6.   

    我建议你使用 winword.exe /p d:\2.doc 试一下。