![]() |
[gelöst] Dienst: Datei drucken
Hi,
ich schreibe gerade einen Dienst für Windows und will eine Datei drucken. Wenn ich versuche, den Dienst unter dem "lokalen Systemkonto" zu starten (auch mit Datenaustausch aktiviert) und drucke, kommt die Meldung, dass kein Standarddrucker definiert sei. Wenn ich meinen Benutzeraccount angebe, funktioniert es mit Textdokumenten, bei denen notepad.exe /p <file> gestartet wird. Microsoft Word zB bekommt aber via DDE seine Parameter, hier funktioniert mein Code nicht (eine eigene DDE-Implementation läuft auch nicht als Service, dazu habe ich hier schon mal was gepostet) - WINWORD.exe wird zwar gestartet, allerdings wird weder das temporäre File angelegt im selben Ordner (ein Zeichen dafür, dass Word das Dokument geöffnet hat) noch etwas gedruckt - wenn ich manuell auf die Datei gehe und per Rechtsklick "Drucken" wähle, geht alles problemlos. Es ist, wohlgemerkt, der selbe Account. Hat einer eine Idee? Hier ist mein Code zum starten:
Delphi-Quellcode:
Ich habe schon von CreateProcessAsUser gelesen, allerdings kann man hier kein Verb "print" angeben, gibt's da eine andere Möglichkeit, Windows eine Datei drucken zu lassen?!
ZeroMemory(@sei, sizeof(sei));
with sei do begin cbSize:=sizeof(sei); // we want a process handle and have no GUI available fMask:=SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_NO_UI; Wnd:=0; lpVerb:='print'; lpFile:=FileName; lpParameters:=nil; lpDirectory:=nil; nShow:=SW_HIDE; end; ShellExecuteExA(@sei); // Errorbehandlung hab ich natürlich drin, ist aber zu lang/uninteressant Danke! |
Re: Dienst: Datei drucken
Willkommen in der Problemwelt, Word dazu zu bringen über DDE Dokumente zu drucken.
Das mit dem Standarddrucker ist ein immer wiederkehrendes Problem bei Word. Du solltest IMMER vor jedem Drucken mittels MyWordAppl.ActivePrinter einen Drucker wählen. Und darüber hinaus, solltest Du noch anschliessend im Seite einrichten Dialog noch den Druckerschacht wählen, denn die Auswahl im Print Dialog reicht da alleine nicht aus. Word ist da so ziemlich das Störrischste was ich je in Sachen drucken gesehen habe. Immer wieder gibt es auch noch Probleme mit der Normal.dot Datei, was dazu führen kann, dass Du Word nicht mehr verlassen kannst und deine Druckroutine hängenbleibt. Ich hab mich selbst intensiv mit dem Thema beschäftigt, und dabei raus kam das Konsolenprogramm ![]() Was ich leider noch nicht hingekriegt hab, ist die Wahl ob Duplexdruck verwendet werden soll oder nicht. Diese Angaben sind irgendwie von Word aus nicht anzusteuern. |
Re: Dienst: Datei drucken
Hi,
wow, Super, dass du dich schon damit befasst hast! Ich schau mir das Tool gerne an, Vielen Dank schonmal. cu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz