Hallo Community,
versuche eine binäre Druckausgabe unter Windows zu programmieren, bei einem lokalen Drucker funktioniert dies wunderbar, jedoch im Netzwerk kommt immer die Fehlermeldung "Drucker nicht gefunden". Hat einer von Euch eine Idee, woran es liegen kann?
Anbei der Quelltext meines Versuches:
'*CompilerDirektiven***********************************************************
$P+
'*ExterneFunktionsDefinitionen*************************************************
Def @OpenPrinter(3) !"WINSPOOL.DRV", "OpenPrinterA"
Def @ClosePrinter(1) !"WINSPOOL.DRV", "ClosePrinter"
Def @StartDocPrinter(3) !"WINSPOOL.DRV", "StartDocPrinterA"
Def @EndDocPrinter(1) !"WINSPOOL.DRV", "EndDocPrinter"
Def @StartPagePrinter(1) !"WINSPOOL.DRV", "StartPagePrinter"
Def @EndPagePrinter(1) !"WINSPOOL.DRV", "EndPagePrinter"
Def @WritePrinter(4) !"WINSPOOL.DRV", "WritePrinter"
'*KonstantenDeklaration********************************************************
Def %NULL 0
'*VariablenDeklaration*********************************************************
Declare PrinterName$
Declare PrinterHandle&
Declare FileName$, FileType$
Declare BufferSize&, WrittenBytes&
'*InterneFunktionsDefinitionen*************************************************
Def @ZeroStr(1) @Add$(@$(1), @Chr$(0))
'*Hauptprogramm****************************************************************
Let PrinterName$ = @ZeroStr("SYMANTEC FAX STARTER EDITION")
If @Equ(@OpenPrinter(@Addr(PrinterName$), @Addr(PrinterHandle&), %NULL), 1)
Let FileName$ = @ZeroStr("D:\25397")
Let BufferSize& = @FileSize("D:\25397")
Let FileType$ = @ZeroStr("RAW")
Declare DocInfo#
Struct Doc_Info_1 = DocName&, OutputFile&, DataType&
Dim DocInfo#, Doc_Info_1
With DocInfo#
.DocName& = @Addr(FileName$)
.OutputFile& = %NULL
.DataType& = @Addr(FileType$)
EndWith
If @Gt(@StartDocPrinter(PrinterHandle&, 1, DocInfo#), 0)
@StartPagePrinter(PrinterHandle&)
Declare File#
Dim File#, 4096
ReadText File#, "D:\25397"
@WritePrinter(PrinterHandle&, File#, BufferSize&, @Addr(WrittenBytes&))
Print WrittenBytes&
Dispose File#
@EndPagePrinter(PrinterHandle&)
@EndDocPrinter(PrinterHandle&)
Else
@MessageBox("Kein Dokument zum Spooling!", "Fehler", 48)
EndIf
Dispose DocInfo#
If @Equ(@ClosePrinter(PrinterHandle&), 0)
@MessageBox("Drucker konnte nicht geschlossen werden!", "Fehler", 48)
EndIf
Else
@MessageBox("Drucker konnte nicht geöffnet werden!", "Fehler", 48)
EndIf
'*Ende*************************************************************************
End
Tschüss
Stefan
|