Zum Inhalt springen

Datei öffnen und zum drucker schicken?


Net-srac

Empfohlene Beiträge

Hi Leutz,

wer von euch hat denn sowas schonmal gemacht, und kann sich noch an die schritte erinnern und den Code finden.

Ich sitze jetzt hier schon seid einer Woche 8h an dem thema drucken, hab aber keine Ahnung wie ich mein prog dazu bewege, den Inhalt seiner Textfelder an den Drucker zu schicken.

Also hab ich mir überlegt, vielleicht eine Datei mit den Daten zu erzeugen und sie dann an den LPT zu schicken.

Ich hab nur keinen blassen schimmer. der standard Print befehl funtzt bei mir nicht. gibts da vielleicht noch andere möglichkeiten? Ich arbeite hier mit der MFC. In diversen Büchern steht zwar was zum thema drin, aber das hab ich nicht verstanden.

gibts hier einen der mir das vielleicht erklären könnte?

Oder die Funktion postet, mit der ich den LPT öffne und die Datei rausschicke?

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

File*drucker=fopen("PRN","w");

fputs("Jetzt sollte ich drucken!",drucker);

fclose(drucker);

Wozu eine Extra-Datei erzeugen, wenn der Drucker doch ein Standard-Stream ist?

Zusätzliche Farbänderungen kann man glaub so erreichen: Siehe:

http://www.fachinformatiker.de/cgi-bin/ubbcgi/ultimatebb.cgi?ubb=get_to pic&f=21&t=000236&counterhit=yes

<FONT COLOR="#a62a2a" SIZE="1">[ 22. August 2001 16:38: Beitrag 4 mal editiert, zuletzt von Crush ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

stdprn ist in stdio.h als PRN definiert. Daneben gibt es noch die Standard-Schnittstelle AUX und CON.

Allerdings sollte man noch vielleicht hinzufügen, daß das natürlich nur funktioniert, wenn der Drucker direkt am Computer angeschlossen ist. In Netzwerken geht das so nicht! Aber ich konnte das auch nicht so einfach testen, weil mein Drucker gerade kaputt ist. Sollte aber klappen.

Es gibt aber auch die Möglichkeit über die DOS Funktionen des BIOS zu arbeiten. Hier wird über die Interrupt Vektoren und den Prozessor-Registern das ganze ausgegeben.

Beispiel:

Man kann über diese Interrupts direkt Funktionen im Bios ausführen.

#include <stdio.h>

#include <dos.h>

void cls()

{

union REGS myregs;

myregs.h.ax=0; erstmal alle Register xtended löschen

myregs.h.cx=0;

myregs.h.dx=0;

myregs.h.bh=7; dann entsprechende Werte setzen (funktionsnummer, usw)

myregs.h.ah=6;

myregs.h.dh=24; Zeilen

myregs.h.dl=79: Spalten

int86(0x10,&inregs,&inregs); 0x10=VIDEO

}

löscht den MS-DOS Bildschirm

Die DOS-Funktionen können über Interrupt 21h angesprochen werden mit der Funktion bdos(functno, dx, al) oder intdos(inregs, outregs):

5 = Zeichen an Drucker

3 = Zeichen von Serieller Schnittstelle

4 = Zeichen an serielle Schnittstelle

2 = Zeichen an Bildschirm

1 = Zeichen von Tastatur

Beispiel:

#include <stdio.h>

#include <dos.h>

void main()

{

static char*string="Hallo, das sollte auf den Drucker!";

while(*string) bdos(0x5,*string++,0);

}

Und intdos funktioniert eigentlich gleich wie das erste Beispiel, nur das die 21h Interrupts damit aufgerufen werden.

Jaja, mit C kann man auch hart an der Assemblergrenze arbeiten! (oder gleich komplett mit inline-Assembler)

<FONT COLOR="#a62a2a" SIZE="1">[ 25. August 2001 18:45: Beitrag 4 mal editiert, zuletzt von Crush ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, dadurch hab ich mich ja auch schon gekämpft, aber z.b. was ist hWnd

Und dann dass pd.nFromPage = 0xFFFF;.

Ich hab halt ziemlich probleme durch die Syntax zu steigen?!

Aber wenn du Dir die mühe nochmal machen würdest es mir zu erklären, würde ich auch gern den Job übernehmen künftig die Fragen mit dem Drucker hier im Forum zu beantworten ;):D .

Viele Grüße

Carsten

Link zu diesem Kommentar
Auf anderen Seiten teilen

hWnd ist der Handle eines Windows, in dem Du aktuell arbeitest. Alle diese ausgaben werden getätigt, wie die Ausgaben in ein Window. Nur werden diese auf den Drucker-Spooler umgeleitet. Daher kannst Du so sogar Grafiken, etc. WYSIWYG ausdrucken, d.h. so wie es auf dem Bildschirm erscheinen würde. Wenn Du mit Windows-Programmierung noch nichts anfangen kannst, solltest Du Dich allerdings erst dort ein Wenig einarbeiten, bevor Du Dich an sowas ranmachst.

pd.nFromPage = 0xFFFF;

pd ist Dein PrinterDevice (ein Objekt) nFromPage ist eine Grundeinstellung. Wahrscheinlich die NumbersFromPage (also Anzahl) und 0xFFFF=dez. 65535 und so viele Seiten hat wohl kaum ein Dokument, deshalb wird einfach alles ausgedruckt.

Und wenn mir jetzt noch einer sagt, ohne Englisch kann man problemlos in der Programmiererwelt auskommen, der bekommt gleich was auf die Nase, denn das haben auf unserer Schule die Leute dauernd versucht den anderen wei(s/ß?)zumachen. (Scheiß Rechtschreibung)

<FONT COLOR="#a62a2a" SIZE="1">[ 23. August 2001 20:15: Beitrag 1 mal editiert, zuletzt von Crush ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich habe hier das Borland C++ B(u)ilder-Buch rumstehen und muß sagen, daß der keineswegs einfacher ist. Vieles kommt mir eh vor wie Wrapper-Klassen um MS - und ein paar Versuchen was eigenes auf die Beine zu stellen (wie die BDE). Das einzige Problem ist, daß es mit Lektüre um Borland wesentlich schlechter bestellt ist - auch wenn die mitgelieferten PDFs ziemliche Oberklasse sind! Die kochen halt eben auch nur mit Wasser.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich wollt euch nur sagen

<schrei>

ICH HAB ES GESCHAFFT

</schrei>

:D:D:D:D:D:D

Ich hab es endlich vollbracht, und so kurz vor dem Wochenende noch meinen Durchbruch gehabt.

Des weiteren hab ich mich entschlossen für alle, die es irgendwann mal genauso trifft ein Tut zu schreiben. Eins von einem Anfänger für andere die auch Anfangen wollen :D

Also besten Dank an alle.

Ich hab übrigens ein Programm geschrieben mit dem man suchanfragen an eine Access DB stellt. Via ODBC. wenn man eine Artikelnummer eingibt stellt es einem diesen Datensatz dar, und schreibt ihn dann auf die Seite, die dann später ausgedruckt wird. So hatt man die Werte, die man aufgrund der DB abfrabe zurückbekommt gleich da und kann sie sich ausdrucken.

Vielleicht für die fortgeschrittenen unter euch eine leichte Übung, aber für mich newbee doch schon ziemlich komplex. Aber jetzt hab ichs.

Schönes Wochenende.

<FONT COLOR="#a62a2a" SIZE="1">[ 24. August 2001 17:55: Beitrag 1 mal editiert, zuletzt von FaFo ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...