Frage deutsch
~~~~~~~~~~~~~~~~~~~
Wie kann meine DOS-Anwendung unter Windows drucken?
 
Wie drucke ich aus einer bestehenden DOS-Anwendung auf einen Windows-Drucker?
Die Druckfunktion meines bewährten DOS-Tools funktioniert unter Windows leider nicht!
 

Question English
~~~~~~~~~~~~~~~~~~~
How can my DOS application make printouts via a Windows printer?
 

Atwort 1
~~~~~~~~~~~~~~~~~~~
[ von Thomas Antoni, 29.1.2006 ]
 
DOS-Anwendungen setzen zum Drucken meist einen Drucker voraus, der am Parallel-Port hängt und Low-Level ASCII-Zeichen "verstehen" kann, etwa solche Drucker, die zm IBM-ProPrinter oder zum Epson FX80 kompatibel sind.
 
Drucker, die einen speziellen Treiber benötigen, am USB-Port angeschlossen sind oder deren Software-Engine aus Kostengründen in den PC verlegt wurde (Windows GDI-Drucker) lassen sich von einer DOS-Anwendung normalerweise nicht ansprechen.
 
Der häufig genannte Trick, den Drucker im Netzwerk freizugeben und als LPT1 wieder zu verbinden, funktioniert leider nicht immer, weil diese Methode nicht von allen Windows-Versionen und Druckertreibern unterstützt wird.
 
Für diesen Zweck gibt es aber spezielle Tools, die aber meistens kostenpflichtig
sind, z.B.
 
"DOSPRINT", das wohl bekannteste Tool - www.dosprint.com/products.htm
"DOSprn" - www.dosprn.com
"DOSPrinter" - www.geocities.com/DOSPrint/
 
Diese Tools ermöglichen das Ausdrucken von Text auf jeden beliebigen Windows-kompatiblen Drucker, auch auf Netzwerkdruckern und auf solchen Druckern, die an den USB-Port angeschlossen ist.
 
In den Shareware- bzw. Demoversionen dieser Tools erscheint in der Regel ein kleiner Werbetext auf jeder ausgedruckten Seite.
 
DOSprn installiert ein TSR-Progrämmchen in der DOS-Umgebung, das die Druckausgabe auf eine Datei umleitet. Ein dazugehöriges Windows-Programm lauscht an dieser Datei und schickt sie dann zum Windows-Drucker. Allerdings versagt auch dieses Programm, wenn die DOS-Anwendung direkt auf den Drucker-Port zugreift und sich nicht der offiziellen BIOS-Routinen bedient.
 
Noch ein Tipp zu DOSprn: Sollten Sonderzeichen wie die deutschen Umlaute falsch dargestellt werden, dann wähle in DOSprn unter "Fonts | Zeichenformat, CP" eine andere Codepage. Meist klappt's mit der Codepage 437 , 850 oder 852.
 
Programmierer, die bereit sind, Ihren Programmcode zu modifizieren, können auch das sehr gute Freeware-Tool "RGH-Druck" von Roland G. Hülsmann verwenden, das unter www.profan.de zum Herunterladen bereitsteht. Mit Hilfe von RGH-Druck lässt sich die Druckfunktion jedes DOS-Programms Windows-tauglich machen. Wie man dieses Tool aus QBasic heraus verwenden kann, demonstriert übrigens mein Programm QBDRUCK.BAS, das auf
www.qbasic.de zum Herunterladen bereitsteht
unter "Qbasic -> Download -> Sonstiges" .
 
 
*** "Drucken in der DOS-Box von Windows XP"
(Tipp aus der c't 5/2004 (Ausschnitte))
 
Moderne Drucker lassen sich häufig nicht aus einer DOS-Box heraus ansprechen, weil sie etwa über USB oder Ethernet mit dem Rechner vebunden sind. Mit einem Trick gelingt es dennoch. In den Eigenschaften eines Druckers (Rechtsklick auf sein Symbol in der Systemsteuerung unter "Drucker und Faxgeräte") muss man dazu die Option "Druckerpool aktivieren" einschalten. Danach kann man einem Drucker aus der angezeigten Liste mehrere Schnittstellen zuweisen, auch wenn tatsächlich keine Verbindung darüber existiert.
 
So gaukelt Windows der DOS-Software auf Wunsch eine beliebige Schnittstelle für den Drucker vor (z.B. Parallelschnitstelle LPT1/2/3 oder serielle Schnittstelle COM1/2/3/4).
 
So konnten wir beispielsweise einen Epson Stylus C44 Plus und einen Canon i450, beide über USB angeschlossen, via zusätzlich aktivierte LPT1- respektive LPT2-Schnittstelle aus der DOS-Box ansprechen. Einem Lexmark Optra 1855 S, über Ethernet in unser Netzwerk eingebunden, gaukelte das Windows-Drucksystem DOS als COM1-Drucker vor. Er war also aus Sicht der DOS-Box scheinbar an serielle Schnittstelle angeschlossen.
 
Im Falle der beiden USB-Drucker mussten wir den Druckprozessor WinPrint (im Reiter "Erweitert") ändern: Der Epson-Drucker wollte das Papier erst richtig auswerfen, als wir dort "RAW [FF appended]" einstellten. Beim Canon- Drucker klappte der DOS-Druck mit der Einstellung "TEXT".
 
 
 
 
 

Antwort 2
~~~~~~~~~~~~~
[ von Andreas Meile ("Dreael"), im QB-Forum, 22.11.04 ]
Siehe dazu
http://dreael.catty.ch/Deutsch/BASIC-Knowhow-Ecke/BASICunterWindows95_98_NT.html
 
Ansonsten meine Tipps bzw. Vorschläge zumindest, die Du einmal ausprobieren kannst: Gib das Gerät im Netzwerk frei (NET SHARE im Prompt oder einfacher rechte Maustaste und "Freigabe"). Anschliessend gib in der Eingabeaufforderung
 
NET USE LPT1: \\PCNAME\FREIGABE
 
ein. Damit verpasst Du dem Drucker ein DOS-konformes LPT, so dass QB damit etwas anfangen können sollte. :-) Allerdings bist Du darauf angewiesen, dass der Drucker noch einen klassischen Befehlssatz versteht; dies ist typischerweise bei diesen ganz billigen GDI-Druckern nicht mehr gegeben, sondern nur die etwas teureren Laserdrucker mit PostScript-Emulation sind in der Lage, solche klassischen Befehlssätze zu verarbeiten. Am besten einmal damit etwas herumexperimentieren.
 
Ansonsten dürfte
www.dosprint.com Dein wirklicher Freund und Helfer sein, denn diese Firma hat eine Emulationssoftware entwickelt.
 
 

Antwort 3
~~~~~~~~~~~~~
[ von Joseph Kirchbaum im PowerBASIC-Forum, 30.4.2003 ]
 
Ein anderes Tool ist DOSPRINT. Das ist ein kostenpflichtiges Programm, dessen Demo-Version auf
www.dosprint.com zum Herunterladen bereitsteht. Die Demo-Version ist voll Funktionsfähig, fügt jedoch auf jeder Druckseite als Wasserzeichen einen 2,5 cm hohen Schriftzug "Sample" ein.
 
*** Infos von der DOSPRINT-Webseite
What is DOSPRINT?
DOSPRINT.EXE is a 32-bit Windows Application that allows a DOS application to print to any Windows printer that has a Windows Driver installed. In essence, DOSPRINT takes a print file name as a command line parameter and parses the file, extracting certain ESC/P and ESC/P2 printer control codes.
 
 
DOSPRINT emulates these codes using the Windows Printing System to create a print job on any given printer, regardless of the brand or model. Because the DOS application only ever needs to print with one set of Escape codes, DOS applications no longer need to have built-in support for every printer control language ever created! As a huge bonus, DOSPRINT permits DOS applications to print to Windows-Only printers, previously an almost impossible task! Finally, device-independent printing is now possible for DOS applications! In addition, DOSPRINT can automatically print multiple copies too, and use network printers.
 
Typically, DOS applications launch DOSPRINT with a SHELL statement, and after completing its task. DOSPRINT then returns control to the DOS application, while the Windows Printing System prints the document from the file created on disk by the DOS application.

[ The QBasic-MonsterFAQ --- Start Page: www.antonis.de/faq ]