Autor
|
Tema: Duda con "Win32_PrintJob" (Leído 7,135 veces)
|
Yaldabaot
Desconectado
Mensajes: 186
|
Buenas, He estado haciendo un tipo de monitoreo de impresoras, cuando el usuario imprime la cola de impresión me da las datos. Pasa que cuando los pido, los datos de nombre, fecha y nombre del documento me dan lo que necesito, pero cuando trato de averiguar cuántas páginas tiene el documento el programa sólo me retorna 1 y en el caso de las páginas totales 0. El programa lo estoy haciendo con Visual Studio 2010 y con C#. Es importante aclarar que he probado con word y notepad, los cuáles se generan con más de 1 página. Les agradecería si me pudieran ayudar con esto. System.Collections.ArrayList printJobCollection = new System.Collections.ArrayList(); //Obtiene los trabajos que contiene en memoria. public System.Collections.ArrayList obtenerimpresiones(string PrinterName) { string PrinterJobs = "SELECT * FROM Win32_PrintJob"; string hora; ManagementObjectSearcher FindPrintJobs = new ManagementObjectSearcher (PrinterJobs ); ManagementObjectCollection prntJobCollection = FindPrintJobs.Get(); foreach (ManagementObject prntJob in prntJobCollection) { System.String jobName = prntJob.Properties["Name"].Value.ToString(); System.String pages = prntJob.Properties["PagesPrinted"].Value.ToString(); System.String print = prntJob.Properties["DriverName"].Value.ToString(); System.String totalpages = prntJob.Properties["TotalPages"].Value.ToString(); hora = DateTime.Now.ToString(); char[] JobSplit = new char[1]; JobSplit[0] = Convert.ToChar(","); string prnterName = jobName.Split(JobSplit)[0]; string documentName = "Nombre del documento->" + prntJob.Properties["Document"].Value.ToString() + " Usuario->" + prntJob.Properties["owner"].Value.ToString() + " - Fecha->" + hora + " - Páginas del documento->" + pages + "- Impresora ->" + print + "Total páginas impresas->" + totalpages + "\n"; if (String.Compare(prnterName, PrinterName, true) == 0) { printJobCollection.Add(documentName); } } return printJobCollection; }
|
|
|
En línea
|
Nunca me contestan -_-
|
|
|
Yaldabaot
Desconectado
Mensajes: 186
|
¿Nadie sabe?, he estado buscando y hay varias personas con el mismo problema que yo y que no han podido solventarlo, les agradecería que si saben algo me ayuden.
|
|
|
En línea
|
Nunca me contestan -_-
|
|
|
Yaldabaot
Desconectado
Mensajes: 186
|
Bueno trataré de plantearlo de otra manera,
Alguno sabe cómo contar o cómo obtener la cantidad de páginas que se han impreso en un documento, he tenido muchos dolores de cabeza por lo mismo y no he podido lograrlo.
Necesito saber si por ejemplo tengo un documento llamado "hola.txt" el usuario dijo que imprimió 5 hojas y lo despliegue.
|
|
|
En línea
|
Nunca me contestan -_-
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.810
|
Que buena info @ Devdox, para que no se escape el dato importante ...esto lo dice todo: Public Enum Job_Notify_Field_Indexes '... JOB_NOTIFY_FIELD_TOTAL_PAGES = &H14 JOB_NOTIFY_FIELD_PAGES_PRINTED = &H15 '... End Enum
Saludos
|
|
« Última modificación: 7 Febrero 2014, 19:29 pm por Eleкtro »
|
En línea
|
|
|
|
Yaldabaot
Desconectado
Mensajes: 186
|
Voy a revisarlo, pero GRACIAS ME HAN SALVADO.
|
|
|
En línea
|
Nunca me contestan -_-
|
|
|
Yaldabaot
Desconectado
Mensajes: 186
|
Tengo este código con lo que he modificado. Watcher = new ManagementEventWatcher (); WqlEventQuery query = new WqlEventQuery ("Select * From __InstanceOperationEvent Within 1 " + "Where TargetInstance ISA 'Win32_PrintJob'"); Watcher.Query = query; dato = Convert.ToInt32(lblcola.Text); // Me indica si hay colas if ( dato>= 1) { Watcher .EventArrived += new EventArrivedEventHandler (this.WmiEventHandler); Watcher.Start(); //Watcher.Stop(); lblNombreArchivo.Text = ""; }
Y tengo el método del evento public void WmiEventHandler(object sender, EventArrivedEventArgs e) { // int contar; string prueba = ((ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value)["PagesPrinted"].ToString(); MessageBox.Show(prueba.ToString()); }
Pero sólo me retorna el valor 1, y me salen varios dialogos, pero no la cantidad exacta de las hojas tampoco.
|
|
|
En línea
|
Nunca me contestan -_-
|
|
|
|
Yaldabaot
Desconectado
Mensajes: 186
|
WqlEventQuery query = new WqlEventQuery ("Select * From __InstanceModificationEvent Within 1 Where TargetInstance Isa \"Win32_PrintJob\" And TargetInstance.PagesPrinted > PreviousInstance.PagesPrinted");
La acabo de cambiar pero es peor , porque ahora no me retorna nada. Saludos. Lo único que necesito es obtener el valor o la cantidad de páginas que se imprimieron, no necesito el nombre del documento,ni la hora, ni el nombre de la impresora, puesto que esos datos ya los saco fácilmente, lamentablemente con esto de las páginas se me ha complicado enormemente!.
|
|
« Última modificación: 8 Febrero 2014, 21:53 pm por Yaldabaot »
|
En línea
|
Nunca me contestan -_-
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
"""BUSCO EJEMPLO VB PARA ENVIAR MAILS""""
Programación Visual Basic
|
gera
|
1
|
6,293
|
1 Septiembre 2005, 00:14 am
por programatrix
|
|
|
De donde puedo descargar utilidades: "Formas", "Estilos", "Motivos", D
Diseño Gráfico
|
Ad0nis
|
2
|
8,281
|
2 Septiembre 2006, 15:48 pm
por Ad0nis
|
|
|
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
|
taton
|
7
|
16,536
|
20 Septiembre 2006, 01:45 am
por taton
|
|
|
Duda sobre meta http-equiv="Content-Type" content="text/html; charset=utf-8"
Desarrollo Web
|
Hadess_inf
|
3
|
12,195
|
22 Julio 2010, 06:44 am
por Morris
|
|
|
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
|
Dark4ngel
|
7
|
13,214
|
3 Noviembre 2011, 10:42 am
por Dark4ngel
|
|