Inhalt eines WebGadgets drucken
Verfasst: 14.01.2013 10:56
Mit nachfolgendem Code drucke ich den Inhalt eines WebGadgets aus.
Klappt prima, auch eingebettete Graphiken werden gedruckt.
Die Routine soll beim ersten Druck nach dem zu verwendenden Drucker fragen.
Im Fenster für die Druckerauswahl kann ich den Druck dann auch abbrechen.
Das aber bekommt meine Routine nicht mit, denn es kommt auch dann ein #S_OK zurück.
Wie kann ich feststellen, dass der Druck abgebrochen worden ist bzw. welcher Drucker gewählt wurde?
Klappt prima, auch eingebettete Graphiken werden gedruckt.
Die Routine soll beim ersten Druck nach dem zu verwendenden Drucker fragen.
Im Fenster für die Druckerauswahl kann ich den Druck dann auch abbrechen.
Das aber bekommt meine Routine nicht mit, denn es kommt auch dann ein #S_OK zurück.
Wie kann ich feststellen, dass der Druck abgebrochen worden ist bzw. welcher Drucker gewählt wurde?
Code: Alles auswählen
;/ Inhalt Webgadget drucken
#OLECMDID_PRINT = 6
#OLECMDEXECOPT_DODEFAULT = 0
#OLECMDEXECOPT_PROMPTUSER = 1
#OLECMDEXECOPT_DONTPROMPTUSER = 2
#OLECMDEXECOPT_SHOWHELP = 3
Procedure.i Drucken(WGadget.i, Datei.s, Logfile.i=#Null)
Static.i mode = -1
Protected.i ok, IsBusy
Protected WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(WGadget), #GWL_USERDATA)
If mode = -1
If StringField(prtsettings, 1, #tr) = "1" : mode = #OLECMDEXECOPT_PROMPTUSER : Else : mode = #OLECMDEXECOPT_DONTPROMPTUSER: EndIf
EndIf
Repeat
WebObject\get_Busy(@IsBusy)
Delay(10) : While WindowEvent(): Wend
Until IsBusy = 0
ok = WebObject\ExecWB(#OLECMDID_PRINT, mode, 0, 0)
If ok = #S_OK
MText = " Gedruckt : " + Datei
mode = #OLECMDEXECOPT_DONTPROMPTUSER : ProcedureReturn #True
Else
MText = " Fehler '" + Str(ok) + "' beim Drucken von : " + Datei
mode = -1 : ProcedureReturn #False
EndIf
If IsFile(Logfile) : WriteStringN(Logfile, MText) : EndIf ;/ Logfile schreiben
Meldung(MText)
Delay(50)
EndProcedure