![]() |
Probleme mit ShellExecute und gsprint
Hallo,
ich habe Probleme beim Drucken von PDF-Dokumenten, die mich bald in den Wahnsinn treiben, weil ich mich schon seit Tagen damit herumschlage und das sich herauskristallisierende Problem aus meiner Sicht etwas mysteriös ist. Ich möchte alle PDF-Dateien in einem Ordner ausdrucken und dann weglöschen. Dazu benutze ich Ghostwriter und Ghostviewer. Auf meinem Testrechner Windows XP läuft alles wie gewünscht. Der entscheidende Codeschnipsel lautet:
Delphi-Quellcode:
Die Variable strShellExecute hat den Wert 'C:\gs\Ghostgum\gsview\gsprint.exe'.
ShellExecute(0, 'open', PChar(strShellExecute),
PChar(' -landscape "' + IncludeTrailingPathDelimiter(QuellpfadPDF) + DateinamePDF + '"'), '', SW_HIDE); Sleep(2000); ShellFileOperation(IncludeTrailingPathDelimiter(QuellpfadPDF) + DateinamePDF, IncludeTrailingPathDelimiter(ZielpfadPDF) + DateinamePDF, FO_MOVE); Tatsächlich soll das Progrämmchen jedoch auf einem Windows 2008 Server ausgeführt werden. Das funktioniert auch ganz prima, wenn man das Programm händisch ausführt (Doppelklick auf die exe). Wenn ich das Programm aber über die Geplante Tasks intervallartig laufen lasse, wird kein Druck ausgelöst. Das Programm startet aber laut TaskManager und verschiebt auch alle Dateien wie gewünscht. Die gsprint.exe scheint aber irgendwie nicht richtig auszulösen. Hat jemand eine Idee, wo das hängen könnte? |
AW: Probleme mit ShellExecute und gsprint
Zitat:
Laß eventuell auch mal das 'open' weg und ersetz es durch ein nil. Zitat:
Taucht da irgendwas im Ereignislog auf? (Verwaltung > Computerverwaltung > Ereignisanzeige) PS:
Delphi-Quellcode:
wenn der Printer mal etwas länger braucht, dann wird es damit wohl nicht ganz funktionieren.
Sleep(2000)
Ich würde da eher zu sowas wie ShellExecuteAndWait raten. |
AW: Probleme mit ShellExecute und gsprint
Hallo,
herzlichen Dank für die Antwort. Ich muss zugeben, dass ich mit dem Projekt schon etwas über meinen Kenntnisstand als "Nicht-mehr-ganz-Frischling" hinausrutsche. Bei "ShellExecute" bin ich mir nicht mehr so ganz sicher, was ich da eigentlich mache. Ich habe in jedem Fall mal 'open' mit nil ersetzt und habe keine Änderung im Verhalten: Programm läuft grundsätzlich. Wenn das Programm über "Geplante Tasks" ausgelöst wird , fehlen weiterhin die Drucke. Derzeitige Notbehelslösung: Geplante Tasks werden an meinem XP-Rechner ausgeführt, der die exe auf meinem Rechner ausführt, dann die gsprint.exe auf meinem Rechner benutzt und im Anschluss die Dateien auf dem Server selbst verschiebt. Auf diesem Weg funktioniert alles einwandfrei. Verdächtige Logeinträge habe ich nicht gefunden (da lasse ich aber nochmal jemand ran). Die Rückgabewerte würde ich auch gerne anschauen. Um die zu bekommen, musste ich ![]() Bei der Sleep-Funktion sehe ich das Problem und habe im ersten Schritt, bis es mal grundsätzlich funktioniert, wenigstens auf 10000 ms erhöht - leider ohne Erfolg. Nachtrag: Inzwischen habe ich das Gefühl, doch im falschen Forum zu sein :-) Ich habe eine Batch-Datei mit folgendem Inhalt erzeugt: c:\gs\Ghostgum\gsview\gsprint.exe -landscape F:\Ordner\MeineDatei.pdf Diese habe ich per Doppelklick ausgelöst -> Druck wird ausgelöst Stupse ich die Batch-Datei über einen Geplanten Task an, kommt kein Druck. Ich hoffe keinen Fehler beim Testen gemacht zu haben, aber in dem Fall wäre Delphi definitiv aus der Nummer raus. Falls dennoch jemand einen Tipp hat wäre ich sehr dankbar. |
AW: Probleme mit ShellExecute und gsprint
Zitat:
Zitat:
![]() ![]() ![]() |
AW: Probleme mit ShellExecute und gsprint
Hallo,
wie bereits geschildert - ich suche inzwischen eine Ebene tiefer, da Delphi mit dem Problem ja nichts zu tun haben scheint. Ich habe daher oben genannte batch-Datei mit folgendermaßen angepasst:
Code:
Starte ich die batch-Datei per Doppelklick, enthält die generierte Textdatei folgenden Inhalt:
"c:\gs\Ghostgum\gsview\gsprint.exe" -landscape "F:\Ordner\MeineDatei.pdf" > testerrors.txt
Zitat:
Zitat:
Zitat:
"Witzigerweise" habe ich eine Lösung hinbekommen, indem ich bei den geplanten Tasks einen Schalter "Run only when user is logged on" gesetzt habe. Allerdings ist das nicht akzeptabel, so dass ich immer noch suche, was das eigentliche Problem sein könnte. Zumindest weiß ich inzwischen, dass das Problem in der Geschichte der Menschheit ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:33 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