設置正確的打印機在MS Word我有以下自動化代碼:通過自動化
lPrintSetup := fWordObject.Application.Dialogs.Item(wdDialogFilePrintSetup);
lPrintSetup.Printer := 'MyPrinter';
lPrintSetup.DoNotSetAsSysDefault := True;
lPrintSetup.Execute;
lPrintSetup := Null;
的Printer
物業給我一些問題,有時Execute
崩潰與EOleException(0x800A1460(錯誤代碼5216):有打印機錯誤),因爲一個錯誤的printername。
我通過EnumPrinters API調用獲取了_PRINTER_INFO_2
記錄中的所有打印機的打印機信息。如果給出_PRINTER_INFO_2
記錄中的信息,我怎樣才能爲Word編寫正確的printername?它至少與Windows 2000,Word 2000和Citrix一起工作。
一些背景資料:
我們的應用程序首先與自我構建的打印機名稱充滿了PRINTERNAME。這給Citrix客戶端帶來了問題,因此對於Citrix客戶端,我們採用了_PRINTER_INFO_2.pPortName
並刪除了客戶端:#:部分。 這是爲我們的大多數客戶工作,但有時仍然顯示打印機錯誤。
我至今嘗試過(在Windows XP SP3,Word 2007中):
- 只取
_PRINTER_INFO_2.pPrinterName
。問題在於,當您有意修改printernames(將'PDFCreator'重命名爲'MYPC上的HP DESKJET 520')時,後者會崩潰(同時在Word中選擇此打印機)。 - 編寫一個像這樣的printername:
lPrintSetup.Printer := PRINTER_INFO_2.pPrinterName + ' on ' + PRINTER_INFO_2.pPortname
。似乎總是工作!但是,搜索結果顯示'on'是本地化的,所以我不確定這是否會在非英文版Windows上運行。 編輯:並不總是工作:(
另一種解決方案我在網上找到:
當從Word閱讀打印機名稱有「的形式PRINTERNAME上Ne01:」,其中Ne01範圍是從Ne00到Ne99:解決方案建議使用printername,並在從Ne00循環到Ne99時試着設置它:當.Execute沒有崩潰時,你已經得到了正確的。我不是很喜歡這個'跟蹤和錯誤'的方法
你不是說因爲本地化的「on」,你不想這樣做嗎? – 2009-09-02 09:34:12