Private Declare Function OpenPrinter& Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, ByVal pDefault As Long)
Private Declare Function GetPrinter& Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pPrinter As Byte, ByVal cbBuf As Long, pcbNeeded As Long)
Private Declare Function ClosePrinter& Lib "winspool.drv" (ByVal hPrinter As Long)
#End If 'WIN32
Private Sub Command1_Click()
Dim pi As PRINTER_INFO_1
Dim hPrinter&, res&
Dim needed&
res = OpenPrinter(txtPRName.Text, hPrinter, 0)
If res = 0 Then
MsgBox "Can't open printer - Specify a valid printer name"
Exit Sub
End If
' Find out how large the buffer needs to be
res = GetPrinter(hPrinter, 1, 0, 0, needed)
ReDim buffer(needed) As Byte
res = GetPrinter(hPrinter, 1, buffer(0), needed, needed)