代码之家  ›  专栏  ›  技术社区  ›  The_Fox

通过自动化在MS Word中设置正确的打印机

  •  0
  • The_Fox  · 技术社区  · 17 年前

    lPrintSetup := fWordObject.Application.Dialogs.Item(wdDialogFilePrintSetup);
    lPrintSetup.Printer := 'MyPrinter';
    lPrintSetup.DoNotSetAsSysDefault := True;
    lPrintSetup.Execute;
    lPrintSetup := Null;
    

    这个 Printer 财产有时会给我带来一些问题 Execute 由于打印机名称错误,导致EOleException崩溃(0x800A1460(错误代码5216):存在打印机错误)。

    我有一个数据库中所有打印机的打印机信息 _PRINTER_INFO_2 我通过EnumPrinters API调用获得的记录。我如何为Word编写正确的printername _打印机信息2 记录它至少与Windows 2000、Word 2000和Citrix配合使用。

    我们的应用程序首先使用自建的Printername填充Printername。这给Citrix客户端带来了问题,因此对于Citrix客户端,我们采用了 _PRINTER_INFO_2.pPortName 并删除了客户端:#:部分。 这适用于我们的大多数客户,但有时仍会出现打印机错误。

    到目前为止我尝试过的(在Windows XP SP3上,Word 2007):

    • 坐火车就行了 _PRINTER_INFO_2.pPrinterName . 问题是,当您有意修改打印机名称(将“PDFCreator”重命名为“MYPC上的HP DESKJET 520”)时,后者会崩溃(在Word works中选择此打印机时)。
    • 按如下方式组合printername: lPrintSetup.Printer := PRINTER_INFO_2.pPrinterName + ' on ' + PRINTER_INFO_2.pPortname 编辑:不总是有效:(

    4 回复  |  直到 17 年前
        1
  •  0
  •   Toby Allen mercator    17 年前

    我不确定您是否尝试过此操作,或者它是否有任何用途,但您可以从Printer.printers对象获取系统上所有打印机的列表。请确保将打印机添加到单元的Uses子句中。

    然后应该列出系统上的实际名称,您可以使用这些信息来做您想做的事情。

        2
  •  0
  •   zz1433    17 年前

    此代码提供默认打印机名称

    Printer.Printers[Printer.PrinterIndex]
    
        3
  •  0
  •   Volkmar Volkmar    17 年前

    几分钟前,我了解到word2k不仅需要像“Ne01上的Printername”这样的Printername:“它只需要端口(NEnn)大写字母“Ne01上的Printername:”

        4
  •  0
  •   The_Fox    17 年前

    我想出来了。Word的printername格式为“NE01上的printername:”。Ne01:是中指定的打印机端口 devices section of win.ini . 现在我把printername写成 _PRINTER_INFO_2.pPrinterName + ' on ' + <PrinterPort from win.ini> 并为FilePrintSetup对话框的打印机属性设置该名称。