Dim hPrinter As Long, hdc As Long, sPrinterName As String
Public Sub OpenPrinter(ByVal PrinterName As String)
Dim pd As PRINTER_DEFAULTS
Dim o As DEVMODE, i As DEVMODE
Dim l As Long
Dim V As Long, sDCName As String
If hPrinter <> 0 Then ClosePrinter
pd.pDatatype = vbNullString
pd.DesiredAccess = PRINTER_ACCESS_ADMINISTER
OpenPrinterAPI PrinterName, hPrinter, pd
l = DocumentProperties(0, hPrinter, PrinterName, o, i, 0)
o.dmSize = l
i.dmSize = l
l = DocumentProperties(0, hPrinter, PrinterName, o, i, DM_OUT_BUFFER)
V = GetVersion()
If V >= 0 Then
sDCName = "WINSPOOL"
Else
sDCName = "WINSPL16"
End If
sPrinterName = fnTrimString(o.dmDeviceName)
hdc = CreateDC(sDCName, sPrinterName, "", o)
End Sub
Public Sub ClosePrinter()
DeleteDC hdc
hdc = 0
ClosePrinterAPI hPrinter
hPrinter = 0
End Sub