ActiveX oder COM Komponenten
Hier ein Beispiel von mir. Es wird eine Datei zum Drucken an Word übergeben. Die Datei "filbestandliste2.rtf" wird gedruckt mit Seite von bis. Die Datei "maengel.rtf" mit Anzahl der eingebenen Kopien.
#include "Gra.ch" #include "Xbp.ch" #include "Appevent.ch" #include "Font.ch" #include "Inkey.ch" #include "xbpdev.ch" #include "activex.ch" #include "xbpdev.ch" #define wdPrintFromTo 3 #pragma Library( "XppUI2.lib" ) #pragma library( "ascom10.lib" ) Function Drucken( cDoc, cDrucker,oPrinter) Local cActivePrinter, aSeite:={}, nCopie:=0 Local oWord Local oDoc oWord := CreateObject("Word.Application") IF Empty( oWord ) MsgBox( "Microsoft Word ist nicht installiert" ) RETURN Nil ENDIF oWord:visible := .f. // Word unsichtbar! cActivePrinter := oWord:Activeprinter // aktuellen Drucker feststellen oWord:Activeprinter:= cDrucker // Neuen Drucker setzen oWord:documents:Open(cDoc) oDoc := oWord:ActiveDocument Do Case Case AT("filbestandliste2.rtf",cDoc) > 0 aSeite:=oDlg:pageRangeSelected oDoc:PrintOut(.f.,Nil,wdPrintFromTo,Nil,alltrim(str(aSeite[1])),alltrim(str(aSeite[2])),Nil,1 ) Case AT("maengel",cDoc) > 0 nCopie:=oPrinter:SetNumCopies() oDoc:PrintOut(.f.,Nil,Nil,Nil,Nil,Nil,Nil,nCopie ) Otherwise oDoc:PrintOut(.f.) EndCase oWord:Activeprinter:= cActivePrinter // alten Drucker setzen oDoc:close() oWord:Quit() oWord:destroy() oWord := NIL Return ( NIL )