Listar documentos de la cola de impresión en Visual Basic 2008

14-abr-2010 Juan Arturo Olmedo Ramírez

Listar_Impresiones - jaor
Listar_Impresiones - jaor
Este artículo muestra como listar los documentos que se encuentran en la cola de impresión del Administrador de Impresión de Windows.

El poder administrar las impresiones, para tener un control estricto de las mismas, ha llevado a generar software comercial con este objetivo. Las empresas buscan disminuir costos en todas sus actividades, y las impresiones es una de ellas. El presente artículo presenta las bases para realizar un Administrador de Impresiones; donde lo inicial es poder tener acceso a los documentos que se encuentran en la cola de impresión de Windows.

Creando el Proyecto

Se ejecuta Visual Basic y se crea un proyecto nuevo con las opciones >Archivo >Proyecto >Aplicación de Windows Form. Se escribe el nombre "PrintJobs" o el que desee y se presiona "Aceptar". Visual Basic construye la estructura base de la aplicación y muestra una forma inicial vacía.

El objetivo de la aplicación es mostrar los documentos que se encuentren en la cola de impresión, para lo cual se utilizaran los siguientes objetos.

Diseñando la Interfaz

Un ListBox con los siguientes atributos:

Name = lstJobs 'Nombre del ListBox

Un Label con lo siguientes atributos:

Name = lblJobs 'Nombre del Label

Text = "Trabajos de Impresión:"

Un Button con los siguientes atributos:

Name = btnActualizar ' El nombre del Button

Text = Actualizar ' El texto indicando la acción del botón

Y a la forma principal asignarle "Print Jobs" en el atributo Text.

Incluyendo la librería para manejo de WMI

La información sobre los documentos que se encuentran procesándose en la cola de impresión, se obtiene a través de la clase "Win32_PrintJob" de WMI. Esto es posible incluyendo la siguiente librería:

Imports System.Management

Ahora hay que agregar la referencia a la librería, a través de las opciones >Proyecto > Agregar Referencia. Al realizar lo anterior, Visual Basic muestra una lista con las librerìas disponibles. Se debe buscar "System.Management" y darle doble "click" para agregarla. Lo anterior es indispensable, para que la librería funcione correctamente.

Obteniendo la lista de trabajos de impresión

Para obtener la lista de trabajos de impresión, se define un procedimiento llamado "GetJobs" el cual contendrá el siguiente código.

Private Sub GetJobs()

'(a) Selecciona los trabajos de impresión pendientes

Dim query As String = "SELECT * FROM Win32_PrintJob"

' (b) Obtiene los objetos de los trabajos de impresión

Using jobQuery As New ManagementObjectSearcher(query)

'(c) Obtiene las colecciones de datos de los objetos de impresión

Using jobs As ManagementObjectCollection = jobQuery.Get()

'(d) Limpia el ListBox

lstJobs.Items.Clear()

'(e) Ciclo para añadir los trabajos al listbox.

For Each job As ManagementObject In jobs

'(f) Obtenemos el nombre del trabajo de Impression

lstJobs.Items.Add(job("Name"))

Next

End Using

End Using

End Sub

Explicación del Código

(a) El código inicia preparando una sentencia SQL en la cual se obtendrán los datos de los documentos que se encuentren en la tabla "Win32_PrintJob".

(b) Posteriormente se obtienen los objetos correspondientes a los trabajos de impresión utilizando la función ManagementObjectSearcher(query), la cual lleva como parámetro la sentencia SQL para obtener los datos.

(c) Lo siguiente es declarar una variable de tipo ManagementObjectCollection y obtener en ella la colección de datos correspondientes a cada uno de los objetos utilizando la función jobQuery.Get().

Para este momento ya se tiene la información disponible de cada uno de los documentos en la cola de impresión; ahora solo hay que acceder a cada uno de ellos y colocar la información en el ListBox.

(d) Antes de entrar al ciclo, se limpia el ListBox, para que se encuentre vacío al momento de agregarle la información.

(e) Se inicia el ciclo, el cual recorrerá cada uno de los trabajos de impresión.

(f) En esta línea de código se obtiene el Nombre del trabajo de Impresión y se coloca en el ListBox. Hay mucha mas información disponible en el trabajo de impresión la cual esta definida en la clase Win32_PrintJob previamente mencionada.

Activando el código en el botón de Actualizar

Ahora solo queda agregar la llamada a la función creada en el evento "click" del button "Actualizar".

'Actualiza la lista de trabajos de impresión

Call GetJobs()

Conclusión

Este código es el principio de una aplicación completa para administrar impresiones. Los siguientes pasos serán "Pausar", "Detener" y "Eliminar" trabajos de impresión y seleccionar de cual impresora.

<Pulse aquí para ver video>

<Pulse aquí para descargar el código>

Copyright del artículo: Juan Arturo Olmedo Ramírez. Contacta con el autor de este artículo para obtener su permiso y autorización expresa para poder usar o publicar su contenido de forma total o parcial.

  • Listar_Impresiones - jaor

    Listar_Impresiones - jaor

Deja tu opinión

NOTA: Al no ser miembro de Suite101.net, tu comentario pasará un filtro de supervisión antes de que aparezca publicado.
Enviar comentario
Cuánto es 0+5?