Druckern mit Acrobat Reader
Von:Harro Schippan hs@dtsd.de
An:Christoph Zintel Zintel@swd-online.de :gelesen |
erstellt am:13.05.2025 07:54:31 - #24410 in section
Antworten
Antworten ohne Zitat
|
Hallo Harro, habe gerade ein wenig rum probiert und es geht auch rein mit dem Shellexecute: ** LCZielDrucker = "DeinDrucker" ** LCPdfFile="Dein.pdf" **DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER **SHELLEXECUTE( 0, "printto", LCPdfFile, LCZielDrucker, "/t", 2) Der Parameter "/t" terminiert den Acrobat nach dem Ausdruck. Ciaoooooooooooooo
|
Hallo Christoph, so, hab jetzt mit printto getestet. Der Parameter "/t" bewirkt, daß das gedruckte Dokument im Acrobat geschlossen wird, aber der Acrobat selbst bleibt offen. Ich möchte mit dem Fux so um die 500 Dokumente auf einem bestimmten Drucker drucken. Das klappt jetzt auch. Die Belege werden in kurzer Zeit ( weniger als 1 Minute ) vom Fux abgewickelt. Allerdings braucht der Acrobat dann so um die 50 MINUTEN um alle Belege abzuarbeiten. In der Zeit kann man nichts anderes auf dem Rechner machen, weil der Focus ständig wechselt. Von daher ist es gut, daß der Acrobat offen ist. Es gehen zum Glück auch keine Belege verloren. Hoffe, daß das jetzt auch bei meinem Kunden funktioniert. Da hat ja der direkte Druck mit dem Acrobat ja zum sofortigen Absturz vom Fux geführt. Erst mal Danke für Deine Hilfe Gruß Harro |
Von:Thomas Geissler info@softart-online.de
An:Harro Schippan hs@dtsd.de :gelesen |
erstellt am:13.05.2025 08:54:23 - #24411 in section
Antworten
Antworten ohne Zitat
Hallo Harro, eine Alternative wäre, programmatisch eine Batchdatei mit copy /b zu erstellen und ausführen zu lassen. Gruß Thomas |
Von:Harro Schippan hs@dtsd.de
An:Christoph Zintel Zintel@swd-online.de :gelesen |
erstellt am:13.05.2025 10:16:24 - #24412 in section
Antworten
Antworten ohne Zitat
|
Hallo Harro, habe gerade ein wenig rum probiert und es geht auch rein mit dem Shellexecute: ** LCZielDrucker = "DeinDrucker" ** LCPdfFile="Dein.pdf" **DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER **SHELLEXECUTE( 0, "printto", LCPdfFile, LCZielDrucker, "/t", 2) Der Parameter "/t" terminiert den Acrobat nach dem Ausdruck. Ciaoooooooooooooo
|
Bin grade beim Kunden auf dem Rechner. Gleiches Problem jetzt mit printto. Ich denke im Moment, daß es an der shell32.dll liegt. Das Programm stürzt sofort ab, wenn der SHELLEXECUTE angesprochen wird. Wollte die shell32.dll mal austauschen, geht aber nicht. Trotz Admin-Rechten läßt der Rechner das nicht zu. Ich brauche die Rechte von "TrustedInstaller" Auf meinem Rechner habe ich die ProduktVersion: 10.0.22621.5124 09.04.2025 Der Kunde hat die Version: 10.0.26100.3624 24.04.2025 Woran könnte es noch liegen? |
Von:Harro Schippan hs@dtsd.de
An:Thomas Geissler info@softart-online.de |
erstellt am:13.05.2025 10:20:49 - #24413 in section
Antworten
Antworten ohne Zitat
|
Hallo Harro, eine Alternative wäre, programmatisch eine Batchdatei mit copy /b zu erstellen und ausführen zu lassen. Gruß Thomas
|
Hallo Thomas, Ich soll die PDF-Datei zum Drucker kopieren? Das geht? Gruß Harro |
Von:Christoph Zintel Zintel@swd-online.de
An:Harro Schippan hs@dtsd.de :gelesen |
erstellt am:13.05.2025 10:35:57 - #24414 in section
Antworten
Antworten ohne Zitat
Hallo Harro, das kann nicht an der DLL liegen, meine ist auch die gleiche Version, wie bei Deinem Kunden und kackt nicht ab. Übrigens wird bei mir mit /t tatsächlich der Acrobat auch terminiert! Ciaoooooooo Christoph |
Von:Harro Schippan hs@dtsd.de
An:Christoph Zintel Zintel@swd-online.de :gelesen |
erstellt am:13.05.2025 10:49:42 - #24415 in section
Antworten
Antworten ohne Zitat
|
Hallo Harro, habe gerade ein wenig rum probiert und es geht auch rein mit dem Shellexecute: ** LCZielDrucker = "DeinDrucker" ** LCPdfFile="Dein.pdf" **DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER **SHELLEXECUTE( 0, "printto", LCPdfFile, LCZielDrucker, "/t", 2) Der Parameter "/t" terminiert den Acrobat nach dem Ausdruck. Ciaoooooooooooooo
|
Hi, habe eine neue Erkenntnis: Habe dieses Programm als exe erstellt: ***************************************************************************** * Drucke PDF-Files mit SHELLEXECUTE printto CLEAR DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER lcPDFFile = ADDBS('C:\KnG-PDF-Manager\RE-352124-127650.pdf') lcPrinter = "RICOH MP C5503 PCL 6" FOR lni = 1 TO 10 retcd = ShellExecute(0,"printto", lcPDFFile , lcPrinter,"",0) ? lni, retcd at 20, lcPDFFile ENDFOR ? "fertig" WAIT WINDOW "huhu" TIMEOUT 30 ***************************************************************************** Es gibt hier keinen Abbruch von VFP. Die 10 ShellExecute-Aufrufe alle mit ReturnCode 42, also ok Der Acrobat startet. Es werden allerdings keine Daten an den Drucker geschickt. Wie schon mal gesagt, das läuft auf mehr als 20 Rechnern ohne Probleme. Das ist ein ganz neuer Rechner. Auf einem zweiten läuft das Programm |
Von:Christoph Zintel Zintel@swd-online.de
An:Harro Schippan hs@dtsd.de :gelesen |
erstellt am:13.05.2025 11:49:11 - #24416 in section
Antworten
Antworten ohne Zitat
Hallo Harro, werden die Drucker an dem PC von Windows verwaltet? Wenn ich Hand an einen neuen PC beim Kunden lege, dann stelle ich einmalig einen Drucker als Windows-Standard-Drucker ein. Dann fragt Windows 11 nämlich, ob der Standard-Drucker nicht mehr von Windows verwaltet werden soll. Die Frage beantworte ich dann mit JA und wechsle wieder auf den bisherigen Drucker. Ciaooooooooooo Christoph |
Von:Bernhard Sander dfpug@individsoft.de
An:Harro Schippan hs@dtsd.de :gelesen |
erstellt am:13.05.2025 11:57:59 - #24417 in section
Antworten
Antworten ohne Zitat
Hallo Harro, |
lcPDFFile = ADDBS('C:\KnG-PDF-Manager\RE-352124-127650.pdf')
|
Damit wird ein Backslash ans Ende des Dateinamens gehängt. Mag es evtl. daran liegen, dass nichts gedruckt wird? Viele Grüße Bernhard Sander |
Von:Harro Schippan hs@dtsd.de
An:Christoph Zintel Zintel@swd-online.de :gelesen |
erstellt am:13.05.2025 12:23:30 - #24418 in section
Antworten
Antworten ohne Zitat
|
Hallo Harro, werden die Drucker an dem PC von Windows verwaltet? Wenn ich Hand an einen neuen PC beim Kunden lege, dann stelle ich einmalig einen Drucker als Windows-Standard-Drucker ein. Dann fragt Windows 11 nämlich, ob der Standard-Drucker nicht mehr von Windows verwaltet werden soll. Die Frage beantworte ich dann mit JA und wechsle wieder auf den bisherigen Drucker. Ciaooooooooooo Christoph
|
Hi Christoph, das mache ich genau so. Bin jetzt an dem Rechner als Administrator angemeldet. Hab Acrobat Reader deinstalliert und neu installiert. Vielleicht hätte ich einen Neustart dazwischen machen sollen. Hiermit wird ein Dokument gedruckt: Der retcd ist 42 ****************************************************************** lcAction = "open" lcFileName = lcAcro lcParams = lcParaAcro + ["] + lcPath+lcPDFfile + [" "] + gcDrucker + ["] lcDir = "" retcd = ShellExecute(0,lcAction,lcFileName,lcParams,lcDir,0) ? "ShellExecute:", retcd ****************************************************************** Hiermit wird KEIN Dokument erzeugt: Der Acrobat zuckt ein wenig rum Außerdem bekomme ich Retcd ".T." ( kein 42 ) ****************************************************************************** Drucke PDF-Files mit SHELLEXECUTE printto CLEAR DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER lcPDFFile = ADDBS('C:\KnG-PDF-Manager\RE-352124-127650.pdf') lcPrinter = "RICOH MP C5503 PCL 6" lcPrinter = "RICOH MP C5503 [0026739C204D]" FOR lni = 1 TO 10 retcd = ShellExecute(0,"printto", lcPDFFile , lcPrinter,"",0) ? lni, retcd at 20, lcPDFFile ENDFOR ? "fertig" ***************************************************************************** Bin ratlos. Er hat zwei gleiche Rechner neu gekauft. Einer geht, der andere nicht. |
Von:Harro Schippan hs@dtsd.de
An:Bernhard Sander dfpug@individsoft.de :gelesen |
erstellt am:13.05.2025 12:35:42 - #24419 in section
Antworten
Antworten ohne Zitat
|
Hallo Harro, |
lcPDFFile = ADDBS('C:\KnG-PDF-Manager\RE-352124-127650.pdf')
|
Damit wird ein Backslash ans Ende des Dateinamens gehängt. Mag es evtl. daran liegen, dass nichts gedruckt wird? Viele Grüße Bernhard Sander
|
Danke, hatte aus zwei Zeilen eine gemacht. Leider keine Verbesserung im Programm. Warum liefert der SHELLEXECUTE ".T." und nicht 42 ?? ****************************************************************************** Drucke PDF-Files mit SHELLEXECUTE printto CLEAR DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER lcPDFFile = "C:\KnG-PDF-Manager\RE-352124-127650.pdf" IF FILE(lcPDFFile ) ? "Datei ist vorhanden" ELSE ? "Mist" RETURN ENDIF lcPrinter = "RICOH MP C5503 PCL 6" *lcPrinter = "RICOH MP C5503 [0026739C204D]" FOR lni = 1 TO 10 retcd = ShellExecute(0,"printto", lcPDFFile , lcPrinter,"/t",2) ? lni, retcd at 20, lcPDFFile ENDFOR ? "fertig" ***************************************************************************** |
Von:Harro Schippan hs@dtsd.de
An:Harro Schippan hs@dtsd.de :gelesen |
erstellt am:13.05.2025 14:12:51 - #24420 in section
Antworten
Antworten ohne Zitat
Habe eben herausgefunden, daß wenn hinter dem DECLARE "INTEGER" fehlt, bekommt man .T. und .F. DECLARE integer ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER Wenn man mit "print" und "printto" arbeitet, wird die den Suffix zugeordnete Anwendung gestartet, so ist mein Eindruck. Auf meinem "Problem Rechner" tauchen die gleichen Probleme bei PDF und TXT Dateien auf. Habe den Eindruck, als ob intern der Druckername nicht immer richtig weiter gereicht wird. Da der Rechner nagelneu ist, habe ich dem Kunden vorgeschlagen eine komplette Neuinstallation durchzuführen. Habt ihr andere (bessere) Vorschläge? Gruß Harro |
|
|