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
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
mfg
Dieter Heublein
"Robert Pieroth" <nos...@nospam.xy> schrieb im Newsbeitrag
news:#mmtWwyWCHA.2720@tkmsftngp10...
> geht es direkt (ESC = ALT+27 = ?).
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
> >
> > 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
> 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