Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Escape Sequenz an Drucker senden ?

517 views
Skip to first unread message

Dieter Heublein

unread,
Sep 13, 2002, 9:21:52 AM9/13/02
to
Hallo,

Wie kann ich eine Escape - Sequenz an den Drucker schicken ?
Ich möchte bestimmte Formulare aktivieren, die nur über Escape - Sequenzen
erreichbar sind.

Wer hat eine Idee ?

mfg
Dieter Heublein


Robert Pieroth

unread,
Sep 13, 2002, 9:48:24 AM9/13/02
to
"Dieter Heublein" <DHeu...@Ewald-Schillig.de> schrieb

> Hallo,
>
> Wie kann ich eine Escape - Sequenz an den Drucker schicken ?
> Ich möchte bestimmte Formulare aktivieren, die nur über Escape - Sequenzen
> erreichbar sind.
>
> Wer hat eine Idee ?

Zum Beispiel per Kommandozeilen-Script (CMD oder BAT):

Echo {ESC-Sequenz} LPT1

oder

Copy {ESC-Sequenz} LPT1
Statt LPT könnte es auch die Druckerfreigabe (\\Server\Printer) sein.

Im DOS-EDIT muß man STRG+P drücken, um z.Bsp. direkt danach mit
ALT+{Zahl} ein nichtdruckbares Zeichen einzugeben. Im NOTEPAD
geht es direkt (ESC = ALT+27 = ←).
--
Viele Grüße
Robert Pieroth

Dieter Heublein

unread,
Sep 13, 2002, 9:55:00 AM9/13/02
to
Hallo Robert,
vielen Dank für Deinen Hinweis, aber es sollte aus VB6 oder VB.Net heraus
erfolgen.

mfg
Dieter Heublein

"Robert Pieroth" <nos...@nospam.xy> schrieb im Newsbeitrag
news:#mmtWwyWCHA.2720@tkmsftngp10...

> geht es direkt (ESC = ALT+27 = ?).

Patrick Denke

unread,
Sep 13, 2002, 9:58:29 AM9/13/02
to
In article <e6OQihyWCHA.1704@tkmsftngp10>, DHeu...@Ewald-Schillig.de
says...

Versuchs mal so:

Private Type DOCINFO
pDocName As String
pOutputFile As String
pDatatype As String
End Type

Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal _
hPrinter As Long) As Long
Private Declare Function EndDocPrinter Lib "winspool.drv" (ByVal _
hPrinter As Long) As Long
Private Declare Function EndPagePrinter Lib "winspool.drv" (ByVal _
hPrinter As Long) As Long
Private Declare Function OpenPrinter Lib "winspool.drv" Alias _
"OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, _
ByVal pDefault As Long) As Long
Private Declare Function StartDocPrinter Lib "winspool.drv" Alias _
"StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _
pDocInfo As DOCINFO) As Long
Private Declare Function StartPagePrinter Lib "winspool.drv" (ByVal _
hPrinter As Long) As Long
Private Declare Function WritePrinter Lib "winspool.drv" (ByVal _
hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, _
pcWritten As Long) As Long

Private Sub Command1_Click()

Dim lhPrinter As Long
Dim lReturn As Long
Dim lpcWritten As Long
Dim lDoc As Long
Dim sWrittenData As String
Dim MyDocInfo As DOCINFO

lReturn = OpenPrinter(Printer.DeviceName, lhPrinter, 0)
If lReturn = 0 Then
MsgBox "Drucker nicht vorhanden"
Exit Sub
End If
MyDocInfo.pDocName = "AAAAAA"
MyDocInfo.pOutputFile = vbNullString
MyDocInfo.pDatatype = vbNullString
lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo)
Call StartPagePrinter(lhPrinter)
sWrittenData = "Test" & vbFormFeed
lReturn = WritePrinter(lhPrinter, ByVal sWrittenData, _
Len(sWrittenData), lpcWritten)
lReturn = EndPagePrinter(lhPrinter)
lReturn = EndDocPrinter(lhPrinter)
lReturn = ClosePrinter(lhPrinter)
End Sub


Gruss Patrick

Klaus Oberdalhoff [MVP]

unread,
Sep 13, 2002, 3:17:09 PM9/13/02
to
Hi,

> >
> > Wie kann ich eine Escape - Sequenz an den Drucker schicken ?
> > Ich möchte bestimmte Formulare aktivieren, die nur über Escape -
Sequenzen
> > erreichbar sind.
> >
> > Wer hat eine Idee ?


>Mit
>
> Open "LPT1:" for output as #1
> print#1,IrgendeineEscapeSequenz
>
>geht das ganz prima

sicherlich ist das eine Möglichkeit, aber wenn es um puren ASCII-Text geht,
und man möchte beispielsweise Etiketten-Seriendrucken, dann kann man doch
auch einen <oder mehrere> Generic/Text-Only Drucker anlegen und unter
Druckereigenschaften in dem Tab "Druckerbefehle" die 4 Kästchen
"Druckauftrag starten" "Druckauftrag beenden" "Papiergröße" und
"Papiereinzug"
sowie unter dem Tab "Schriftartenauswahl" die 7 Kästchen ("10 cpi
auswählen", ... "Fett an" "Fett aus" ... etc)
mit ESC-Sequenzen belegen nach dem Motto

<1B>BC - wobei <1B> der Hex-Code für ESC ist (das Ganze sollte <ESC>BC
sein ) ...

Ist das nicht einfacher, als alles mit Print ... zu machen ? Das kann man
dann auch mit Word etc. verwenden

Die Druckereigenschaften erhält man mit:
Start / Einstellungen / Drucker / "Generic / Text only" Drucker auswählen,
dann mit recher Maustaste : Eigenschaften, da sind die ganzen Tabs


--
mfg Klaus Oberdalhoff ko...@gmx.de

Marcus Baumann

unread,
Sep 13, 2002, 6:58:44 PM9/13/02
to
"Dieter Heublein" schrieb:

> Wie kann ich eine Escape - Sequenz an den Drucker schicken ?
> Ich möchte bestimmte Formulare aktivieren, die nur über Escape - Sequenzen
> erreichbar sind.

Ich hab das ganze so gelöst und es funktioniert (egal in welcher konstellation
und egal welches BS) problemlos.

Open "lpt1" for output as #1
print #1, chr(27) & chr(xx) 'etc.
close #1

Gruß Marcus


0 new messages