Private Declare Function DeviceCapabilities _
        Lib "winspool.drv" Alias "DeviceCapabilitiesA" _
        (ByVal lpDeviceName As String, _
         ByVal lpPort As String, _
         ByVal iIndex As Long, _
         ByVal lpOutput As String, _
         ByVal lpDevMode As Long) As Long

Private Declare Function DeviceCapabilitiesNum _
        Lib "winspool.drv" Alias "DeviceCapabilitiesA" _
        (ByVal lpDeviceName As String, _
         ByVal lpPort As String, _
         ByVal iIndex As Long, _
         lpOutput As Integer, _
         ByVal lpDevMode As Long) As Long


Private Sub LoadPaper()
Dim stPapersName As String
Dim iPapers As Long
Dim prtName As String
Dim prtPort As String
Dim iPapersCode() As Integer
Dim prt As Printer
Dim tt$

    Set prt = Printers(cbPrint.ListIndex)
    
    prtName = Printer.DeviceName
    prtPort = Printer.Port
    lstPaper.Clear
       
    'Si richiede il numero di tipi di folgio supportati
    iPapers = DeviceCapabilities(prtName, prtPort, DC_PAPERNAMES, vbNullString, 0)
    
    stPapersName = String$(MAXLENPAPER * iPapers, 0)
    DeviceCapabilities prtName, prtPort, DC_PAPERNAMES, stPapersName, 0
    
    ReDim iPapersCode(iPapers) As Integer
    DeviceCapabilitiesNum prtName, prtPort, DC_PAPERS, iPapersCode(0), 0
    
    Do
        tt = Left$(stPapersName, MAXLENPAPER)
        If InStr(tt, vbNullChar) > 0 Then
            tt = Left$(tt, InStr(tt, vbNullChar) - 1)
        End If
        lstPaper.AddItem tt
        lstPaper.ItemData(lstPaper.NewIndex) = iPapersCode(lstPaper.NewIndex)
        stPapersName = Mid$(stPapersName, MAXLENPAPER + 1)
    Loop While Len(stPapersName)
    
    
End Sub

Private Sub LoadBin()
Dim stBinsName As String
Dim iBins As Long
Dim prtName As String
Dim prtPort As String
Dim iBinsCode() As Integer
Dim prt As Printer
Dim tt$

    Set prt = Printers(cbPrint.ListIndex)
    
    prtName = Printer.DeviceName
    prtPort = Printer.Port
    lstBin.Clear
       
    iBins = DeviceCapabilities(prtName, prtPort, DC_BINNAMES, vbNullString, 0)
    
    stBinsName = String$(MAXLENBIN * iBins, 0)
    DeviceCapabilities prtName, prtPort, DC_BINNAMES, stBinsName, 0
    
    ReDim iBinsCode(iBins) As Integer
    DeviceCapabilitiesNum prtName, prtPort, DC_BINS, iBinsCode(0), 0
    
    Do
        tt = Left$(stBinsName, MAXLENBIN)
        If InStr(tt, vbNullChar) > 0 Then
            tt = Left$(tt, InStr(tt, vbNullChar) - 1)
        End If
        lstBin.AddItem tt
        lstBin.ItemData(lstBin.NewIndex) = iBinsCode(lstBin.NewIndex)
        stBinsName = Mid$(stBinsName, MAXLENBIN + 1)
    Loop While Len(stBinsName)
    
    
End Sub
