AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] Dienst: Datei drucken

Ein Thema von sECuRE · begonnen am 6. Feb 2006 · letzter Beitrag vom 7. Feb 2006
Antwort Antwort
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#1

[gelöst] Dienst: Datei drucken

  Alt 6. Feb 2006, 21:47
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:
  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
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?!

Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Dienst: Datei drucken

  Alt 6. Feb 2006, 22:40
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 PrintDoc. Kuck Dir den Quellcode mal an, vielleicht ist was Brauchbares für Dich dabei, oder vielleicht kannst Du auch gleich da Programm direkt nutzen. Bei läufts das Dingen mittlerweilen recht zuverlässig. Angabe des Druckers und Schachtes klappt soweit ganz gut. Bei mehreren Dokumenten rate ich dir den Parameter -alive zu nutzen...

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.
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#3

Re: Dienst: Datei drucken

  Alt 7. Feb 2006, 02:21
Hi,

wow, Super, dass du dich schon damit befasst hast! Ich schau mir das Tool gerne an, Vielen Dank schonmal.

cu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz