AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit ShellExecute und gsprint

Ein Thema von Nafetz · begonnen am 2. Jul 2012 · letzter Beitrag vom 3. Jul 2012
Antwort Antwort
Nafetz

Registriert seit: 2. Jul 2012
3 Beiträge
 
#1

Probleme mit ShellExecute und gsprint

  Alt 2. Jul 2012, 11:40
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:
ShellExecute(0, 'open', PChar(strShellExecute),
                 PChar(' -landscape "' +
                 IncludeTrailingPathDelimiter(QuellpfadPDF) +
                 DateinamePDF + '"'), '', SW_HIDE);
Sleep(2000);
ShellFileOperation(IncludeTrailingPathDelimiter(QuellpfadPDF) +
                   DateinamePDF,
                   IncludeTrailingPathDelimiter(ZielpfadPDF) +
                   DateinamePDF,
                   FO_MOVE);
Die Variable strShellExecute hat den Wert 'C:\gs\Ghostgum\gsview\gsprint.exe'.

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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Probleme mit ShellExecute und gsprint

  Alt 2. Jul 2012, 12:07
Zitat:
Die gsprint.exe scheint aber irgendwie nicht richtig auszulösen.
Die Rückgabewerte der beiden Funktionen sagen nichts aus? (falls man sie mal prüfen würde)


Laß eventuell auch mal das 'open' weg und ersetz es durch ein nil.


Zitat:
Tatsächlich soll das Progrämmchen jedoch auf einem Windows 2008 Server ausgeführt werden
Server haben teilweise ein paar etwas strängere Sicherheitsrichtlinien.
Taucht da irgendwas im Ereignislog auf? (Verwaltung > Computerverwaltung > Ereignisanzeige)



PS: Sleep(2000) wenn der Printer mal etwas länger braucht, dann wird es damit wohl nicht ganz funktionieren.
Ich würde da eher zu sowas wie ShellExecuteAndWait raten.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 2. Jul 2012 um 12:12 Uhr)
  Mit Zitat antworten Zitat
Nafetz

Registriert seit: 2. Jul 2012
3 Beiträge
 
#3

AW: Probleme mit ShellExecute und gsprint

  Alt 2. Jul 2012, 17:19
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 so etwas veranstalten, oder?

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.

Geändert von Nafetz ( 2. Jul 2012 um 17:50 Uhr) Grund: Zusätzliche Info zum Problem
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Probleme mit ShellExecute und gsprint

  Alt 2. Jul 2012, 19:04
Falls dennoch jemand einen Tipp hat wäre ich sehr dankbar.
Zitat:
Die gsprint.exe scheint aber irgendwie nicht richtig auszulösen.
Die Rückgabewerte der beiden Funktionen sagen nichts aus? (falls man sie mal prüfen würde)
Result + MSDN-Library durchsuchenGetLastError (Delphi-Referenz durchsuchenRaiseLastOSError / Delphi-Referenz durchsuchenSysErrorMessage)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Nafetz

Registriert seit: 2. Jul 2012
3 Beiträge
 
#5

AW: Probleme mit ShellExecute und gsprint

  Alt 3. Jul 2012, 08:23
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:
"c:\gs\Ghostgum\gsview\gsprint.exe" -landscape "F:\Ordner\MeineDatei.pdf" > testerrors.txt
Starte ich die batch-Datei per Doppelklick, enthält die generierte Textdatei folgenden Inhalt:
Zitat:
GPL Ghostscript 9.05 (2012-02-08)
Copyright (C) 2010 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
Substituting font Times-Roman for TimesNewRomanPSMT.
Loading NimbusRomNo9L-Regu font from %rom%Resource/Font/NimbusRomNo9L-Regu... 2591112 1226602 1630352 330175 3 done.
Substituting font Helvetica for ArialMT.
Loading NimbusSanL-Regu font from %rom%Resource/Font/NimbusSanL-Regu... 2591112 1260477 1650448 356060 3 done.
Copyright (C) 2003-2006, Ghostgum Software Pty Ltd. All Rights Reserved.
2006-02-24 gsprint 1.9
Page 1, PRINT
Starte ich die batch-Datei dagegen mit einem geplanten Task enthält die Textdatei nur noch:
Zitat:
Copyright (C) 2003-2006, Ghostgum Software Pty Ltd. All Rights Reserved.
2006-02-24 gsprint 1.9
Sieht irgendwie so aus, als ob in diesem Fall ghostscript nicht gefunden würde. Eine Änderung der batch-Datei in
Zitat:
"c:\gs\Ghostgum\gsview\gsprint.exe" -ghostscript "C:\gs\gs9.05\bin\gswin32c.exe" -landscape "F:\Ordner\MeineDatei.pdf" > testerrors.txt
brachte leider keine Änderung.

"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 schon einmal aufgetreten ist.
  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 12:05 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