LISTAR TODOS OS PAPEIS DA IMPRESSORA

CLINS 10/04/2007 12:59:23
#211000
Alguém teria um exemplo de como listar todos os paeis disponíveis para a impressora selecionada ?
Preciso listar inclusive os papeis personalizados criados pelo usuário
ANGELO.BA 10/04/2007 14:55:05
#211045
Resposta escolhida
Caro Clins, com este exemplo abaixo vc poderá ver os papéis aceitos pela sua impressora padrão, mas não os personalizados, para ver os personalizados dê uma procurada no registro do windows.

Private Const DC_PAPERNAMES = 16
Private Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Long, lpOutput As Any, lpDevMode As Any) As Long

[c]Private Sub Form_Load()
Dim Ret As Long, PaperSizes() As Byte, Cnt As Long, AllNames As String
Dim lStart As Long, lEnd As Long
'Numero de papeis disponiveis
Ret = DeviceCapabilities(Printer.DeviceName, "LPT1", DC_PAPERNAMES, ByVal 0&, ByVal 0&)

ReDim PaperSizes(1 To Ret * 64) As Byte

'Nomes dos papeis
Call DeviceCapabilities(Printer.DeviceName, "LPT1", DC_PAPERNAMES, PaperSizes(1), ByVal 0&)

Me.AutoRedraw = True
Me.Print "Papéis suportados:"

AllNames = StrConv(PaperSizes, vbUnicode)

Do
lEnd = InStr(lStart + 1, AllNames, Chr$(0), vbBinaryCompare)
If (lEnd > 0) And (lEnd - lStart - 1 > 0) Then
Me.Print Mid$(AllNames, lStart + 1, lEnd - lStart - 1)
End If
lStart = lEnd
Loop Until lEnd = 0
End Sub



OBS: este código não foi eu quem fiz.
[/c]
Tópico encerrado , respostas não são mais permitidas