COMO DEFINIR A IMPRESSORA PADRAO DO WIN VIA CODIGO

 Tópico anterior Próximo tópico Novo tópico

COMO DEFINIR A IMPRESSORA PADRAO DO WIN VIA CODIGO

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#1304 - 17/12/2003 09:00:10

USUARIO.EXCLUIDOS

Cadast. em:


Preciso definir a impressora padrao do windows via codigo, como posso fazer?



Resposta escolhida #1355 - 17/12/2003 11:18:30

USUARIO.EXCLUIDOS

Cadast. em:


Para conhecer a Impressora Padro Instalada:


insira o cdigo abaixo no mdulo :

Private Declare Function GetProfileString Lib "kernel32.dll" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long

Public Function GetDefaultPrinter() As Printer
Dim strBuffer As String * 254
Dim iRetValue As Long
Dim strDefaultPrinterInfo As String
Dim tblDefaultPrinterInfo() As String
Dim objPrinter As Printer

' pega as informacoes da impressora padrao
  iRetValue = GetProfileString("windows", "device", ",,,", strBuffer, 254)
  strDefaultPrinterInfo = Left(strBuffer, InStr(strBuffer, Chr(0)) - 1)
  tblDefaultPrinterInfo = Split(strDefaultPrinterInfo, ",")
  For Each objPrinter In Printers
        If objPrinter.DeviceName = tblDefaultPrinterInfo(0) Then
          ' se achou a impressora padrao entao sai
          Exit For
        End If
   Next
   ' se nao achou retrona nothing
  If objPrinter.DeviceName  tblDefaultPrinterInfo(0) Then
      Set objPrinter = Nothing
  End If
  Set GetDefaultPrinter = objPrinter
End Function


No formulrio padro:
Private Sub Command1_Click()

Dim objPrinter As Printer
Set objPrinter = GetDefaultPrinter()

MsgBox "Impressora padrao = " + objPrinter.DeviceName & vbCrLf & _
"Driver da impressora = " + objPrinter.DriverName & vbCrLf & _
"A porta usada a = " + objPrinter.Port

Set objPrinter = Nothing

End Sub




Selecionando a impressora que ser usada na impresso

'No mdulo
Public Function SelectPrinter(byVal Nome as String) As Boolean
  Dim X as Printer
  For each X in Printers
    If Ucase(Mid(X.DeviceName,1,8))=UCase(Mid(Nome,1,8)) then
      Set Printer=X
      SelectPrinter = True
      Exit For
    End If
  Next
  SelectPrinter = False
End Function


'P/ chamar:
Dim RET As Boolean
RET = SelectPrinter("Epson LX-300")
If RET = True Then
  'A impressora foi encontrada e selecionada.
Else
  'A impressora NO foi encontrada.
End If
A funo definir esta impressora ("Epson LX-300", como no exemplo) como padro para a impresso a ser realizada.

ATENO!!!! Para que essa funo funcione, voc necessitar ter o Service Pack 3 do Visual Basic instalado em sua mquina para corrigir um bug do VB.

WEBMASTER do VBWEB.





 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por WEBMASTER em 18/08/2009 10:03:45