Druckersteuerzeichen zum Drucker senden?

Hallo Spezi’s,

ich versuche gerade unter VisualBasic 2005 Druckersteuerzeichen zu einem Windows-Drucker zu senden. Geht aber nicht!
Mit DrawString wird ja immer nur der Text ausgegeben. Oder gibt es eine Option in Drawstring damit der Text als Steuerzeichen erkannt und entsprechend ausgewertet wird?

Plan B wäre die Steuerzeichen via Copy-Befehl zum Druckeranschluß zu senden. Funktioniert auch, ist aber umständlich und einige Drucker im Netz können so nicht angesprochen werden. Außerdem kann ich unter VB nicht den Anschluß des Druckers abfragen (LPT, \Server\HPV,…) sondern nur den Druckernamen.

Für sachdienliche Hinweise wäre ich überaus dankbar.

Gruß Tom

Hallo Tom
Im Prinzip „soll“ das von Dir genannte auch nicht funktionieren, bzw. ist so nicht vorgesehen.
Druckersteuerzeichen brauchst Du für einen Drucker auch normalerweise nicht mehr, wenn der Treiber für den Drucker installiert ist.
Im Netzwerk erscheinen meines Wissens auch keine Lpt-Ports eines PC`s auf einem anderen PC.
Mit dem Druckertreiber sollte es möglich sein, alle Eigenschaften des Druckers zur Verfügung zu stellen.
Sollte es dennoch notwendig sein, irgendwelche Codes an den Druckerport zu senden, zum Beispiel auch für Geräte, die gleichzeitig mit am Port hängen oder für DOS ähnliche Operationen, dann seh ich folgende Möglichkeiten:

  1. Jedes Programm, welches auf den Port LPTx zugreift, muß auf dem jeweiligen PC installiert sein.
  2. Die Copy-Methode ist natürlich etwas lahm, dafür gibt es diese Möglichkeiten:
    Der Druckerport steht unter Windows als Datei zur Verfügung.
    Dafür must Du API-Programmierung verwenden.(aus MSDN,1999)
    Ich meinte es sei CreateFile und WriteFile welche mit entsprechenden Parametern ein Schreiben und Lesen auf den Druckerport erlauben.
    Wie und ob das übers Netzwerk geht, kann ich nicht sagen. Der Computername steht allerdings immer am Anfang der Pfadsyntax.
    Einen Druckerport von einem anderen Rechner aus zu programmieren, erscheint mir schon etwas verwegen und ist auch möglich mit einer Server/Client Anwendung, also Programmen, die Nachrichten übers Netz austauschen.
    Es gibt auch ein Tool, welches Hardwarezugriff mit Hilfe einer OCX zuläßt. Hier weiß ich nicht, obs auf NT läuft.

MfG
Matthias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Matthias,

danke für die Antwort.
Mein Problem liegt etwas anders.
Ich erhalte von einem anderen Programm eine Druckdatei, welche nur aus PCL und HPGL Kommandos besteht. Diese Datei bzw deren Inhalt möchte ich auf einen Windows-Drucker senden.
Vergleichbar wäre mein Problem wenn man eine Seite über den Druckertreiber in eine Datei druckt. Dann möchte man die Datei auf den Drucker schreiben. Aber wie, wenn man dazu kein anderes Programm starten möchte oder kann.

Gruß und Danke

Tom

Hallo,

also das was du vorhast kann man schon implementieren. Ich habe das mal vor einigen Jahren noch unter 16Bit Windoof gemacht, allerdings unter C++. Die Vorgehensweise mittels der API ist folgende:
Man besorgt sich einen Druckerkontext des entsprechenden Druckers mittels hDC = CreateDC(…) die Paramter bekommt man ueber GetProfileString(„windows“, „device“, „,“, „MeinDruckerName“, 120);

Dann kam man mittels Escape(hdcPrint, STARTDOC, 8, „Test-Doc“, NULL)
den Druck einleiten. Bei der Escape-Funktion gibt es auch eine PASSTROUGH Funktion die es erlaubt eine Zeichenkette unbehandelt durch Treiber an den Drucker zu schicken.

Das ist zwar eine fuerchterliche Fummelei aber man kann es iregnwie bewerkstelligen. Ich hatte das damals verwendet um unter Windows einen Nadeldrucker im Textmodus ansprechen zu koennen.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]