Visual Basic.NET - Seleccionar impresora por defecto

 
Vista:
Imágen de perfil de Jorge
Val: 1
Ha aumentado su posición en 7 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Seleccionar impresora por defecto

Publicado por Jorge (6 intervenciones) el 27/01/2016 16:25:58
Hola.

Mi programa necesita poder seleccionar la impresora por defecto. Lo que quiero imprimir son archivos en formato PDF, pero no puedo mostrarlos en adobe u otro programa. La impresión tiene que ser directa a la impresora.

Para imprimir el archivo utilizo esta función

1
2
3
4
5
6
7
8
9
10
11
Sub IMPRIMIR_ARCHIVO(ByVal ARCHIVO As String)
	If Trim(ARCHIVO) <> "" Then
		Dim MyProcess As New Process
		MyProcess.StartInfo.CreateNoWindow = False
		MyProcess.StartInfo.Verb = "print"
		MyProcess.StartInfo.FileName = ARCHIVO
		MyProcess.Start()
		MyProcess.WaitForExit(1000)
		MyProcess.Close()
	End If
End Sub

Le paso como parámetro el archivo que deseo imprimir y se imprime perfectamente.

La cuestión es seleccionar una impresora por la que va a imprimirse previamente.

Utilizo un PrintDialog para que el usuario seleccione la impresora que desea.

También utilizo una función para seleccionar la impresora que he encontrado por internet

Declare Function SetDefaultPrinter Lib "winspool.drv" Alias "SetDefaultPrinterA" (ByVal pszPrinter As String) As Boolean

El código que utilizo es el siguiente:

Dim result As DialogResult = PrintDialog1.ShowDialog()

1
2
3
4
If (result = DialogResult.OK) Then
    SetDefaultPrinter(PrintDialog1.PrinterSettings.PrinterName)
    iMPRIMIR_ARCHIVO(LBLARCHIVO.Text)
End If

Todo funciona perfectamente. Pero solo la primera vez. Me explico. La primera vez que selecciono la impresora el PDF sale por esa impresora, pero si vuelvo a imprimir y selecciono otra impresora no acepta el cambio de impresora y vuelve a imprimir por la primera que seleccioné.

Alguien tiene idea de cual es el problema que puedo tener. O en su defecto otro método que me permita indicar la impresora por la que deseo imprimir cada documento.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge
Val: 1
Ha aumentado su posición en 7 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Seleccionar impresora por defecto

Publicado por Jorge (6 intervenciones) el 27/01/2016 17:50:22
Creo que tengo una pista.

El problema está en que la primera vez abre adobe y establece la impresora por defecto.

La siguiente vez no abre adobe por lo que no puede establecer la impresora por defecto si esta ha cambiado.

Si cierro el adobe vuelve a funcionarme la selección de la impresora.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar