Listar documentos de la cola de impresión en Visual Basic 200814-abr-2010 Juan Arturo Olmedo Ramírez
Listar_Impresiones - jaor
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. 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.
|