![]() |
TService & Windows7: pdf-/txt-Datei drucken
Hallo,
hat jemand eine Idee, wie ich unter Windows7 aus einem Dienst eine pdf- pder eine txt-Datei drucken kann. Der direkte Aufruf von
Code:
schlägt unter dem Systemkonto fehl, da keine Drucker installiert sind (und wohl auch nicht können). Wenn ich den Dienst mit einem anderen Benutzeraccount (inkl installierter Drucker) starte, kommt leider auch nichts aus dem Drucker.
ShellExecute(Application.Handle, 'printto', PChar(Dokument), PChar(printerInfo), NIL, SW_HIDE);
Meine Recherche hat bisher nur ergeben, dass MS etwas an den Zugriffseinstellungen für Win7 geändert hat. Eine Lösung für mein Problem konnte ich bisher jedoch nicht finden. Danke für Eure Hilfe. Grüße Holger |
AW: TService & Windows7: pdf-/txt-Datei drucken
Hallo und herzlich Willkommen in der DP :dp: :dp:
Im Notfall ein "externes" Programm benutzen, welches im Benutzerkontext ausgeführt wird und dann den Druckauftrag abgibt. Bernhard |
AW: TService & Windows7: pdf-/txt-Datei drucken
@rollstuhlfahrer: Das versucht er ja ... Also, er versucht über printto das Standardprogramm für PDFs zu starten und dieses soll dann drucken. :zwinker:
Ich vermute einfach mal, daß eventuell sogar der Druckertreiber vorhanden ist, aber im Systemkonto sind andere Registry-Pfade verlinkt und da werden wohl einfach keine Verlinkungen für *.PDF eingetragen sein. Sowas läßt sich übrigens rausfinden, indem man mal die Rückgabewerte (Result) von ![]() Vor Kurzem (diese/letzte Woche) gab es hier in der DP einen Thread, wo es darum ging, wie man von einem Service aus z.B. ein Programm im Benutzerkontext starten kann. Das würde dann ganz bestimmt dein Problemchen lösen. Ansonsten kannst du auch mal versuchen ob es was bringt, wenn du das PDF-Programm direkt startest.
Delphi-Quellcode:
,
ShellExecute(Application.Handle, 'open', PChar(PfadZumPDFProgramm), PChar('"' + Dokument + '" /weitere /Parameter'), NIL, SW_HIDE);
bzw. einfach erstmal in eine Logdatei reinschreiben, ob über die Unit ![]() |
AW: TService & Windows7: pdf-/txt-Datei drucken
Zitat:
Delphi-Quellcode:
und das dann Aufrufen mit
programm TestApp;
uses Windows, ShellAPI; begin if ParamCount <> 3 then Exit; // Alternativ eine Warnung ausgeben! ExitCode := ShellExecute(0, PChar(ParamStr(1)), PChar(ParamStr(2)), PChar(ParamStr(3)), nil, SW_SHOW); end;
Code:
.
TestApp.exe "printto" "Dokument" "printerInfo"
Aus dem ExitCode bekommt man immerhin mit, ob ein Fehler vorlag, leider nicht, welcher. Den Thread, in dem gezeigt wird, wie das geht, um aus einem Dienst ein Programm im Benutzerkontext zu starten ist übrigens ![]() ![]() Bernhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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-2025 by Thomas Breitkreuz