[REBOL] Re: View/Pro and accessing Windows Printer API (gdi32.dll)
From: amicom:sonic at: 1-Jul-2002 9:41
Gregg,
Your solution does return an apparently valid handle when I apply it to
OpenPrinter, but StartDocPrinter still doesn't like it (returns a code of 6
which means "invalid handle").
Here's my script so far (beware of line-wrapping!):
winspool: load/library %winspool.drv
kernel32: load/library %kernel32.dll
print "Define GetLastError"
getlasterror: make routine! [
return: [long]
] kernel32 "GetLastError"
print "Define OpenPrinter"
openprinter: make routine! [
"Open Printer"
pprintername [string!]
phprinter [char*]
pdefault [string!]
return: [integer!]
] winspool "OpenPrinterA"
print "Define StartDocPrinter"
startdocprinter: make routine! [
"StartDocPrinter"
hprinter [char*]
dwlevel [int]
lpbdocinfo [struct! [
cbsize [int]
lpszdocname [string!]
lpszoutput [string!]
lpszdatatype [string!]
fwtype [int]
]]
return: [int]
] winspool "StartDocPrinterA"
print {Create a Null Buffer - Thanks to Gregg Irwin and Gabrielle Santilli
on REBOL list}
null-buff: func [len][
head insert/dup make string! len #"^(00)" len
]
print {Create Pointer Variable - Thanks again to Gregg Irwin}
prin "Initial value: "
probe to-binary hprinter: null-buff 4
print "Create DocInfo Struct"
docinfo: make struct! [
cbsize [int]
lpszdocname [string!]
lpszoutput [string!]
lpszdatatype [string!]
fwtype [int]
][100 "Test Print" "" "" 0]
print "Call OpenPrinter"
print either zero? ret: openprinter "Brother MFC3100C" hprinter ""
["FAIL!"]["Success"]
prin "Current value: "
probe to-binary hprinter
print "Call StartDocPrinter"
print either zero? dwjob: startdocprinter hprinter 1 docinfo [["ERROR!"
getlasterror]]["SUCCESS!"]
halt
If anyone has suggestions on why StartDocPrinter doesn't like the handle,
I'd be very curious to find out!
Thanks for all the help so far. I'm hoping that someday REBOL users can
have graphical access to printers. I know it would make my applications a
lot more useful!
-Bo
At 09:23 AM 6/29/02 -0600, you wrote: