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 ]