FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
falla getJobs() acceder a los jobs de la cola de impresion con getJobs()
Necesito inspeccionar la cola de imprecion de win2000, estoy intentando
sacar la info del jobs 1, pero falla GetJob() (no logro recuperar la ectructura jobsInfo2) ok:= GetJob(MangoPrinter,1,2,jobsInfo2,1000,@jobsInfo2Size); //retorna jobsInfo2Size=0 Esto es mi primer uso de APIs, y la verdad es que todaba no se que es cada cosa. La primer parte (sin GetJob) del codigo la saque de TrucoMania, OpenPrinter devolvio un handle corecto, GetPrinter() retorna en PrinterInfo2 informacion corecta, el problema esta en getJobs(). NOTA:al momento de correr el codigo tengo 3 archivos en cola. Necesito que me digan que esta mal, porque la 1da llamada de getJobs() retorna jobsInfo2Size=0 haciendo inaccecible la estructura jobsInfo2. Código:
/---Codigo -------- jobsInfo2 :^TJobInfo2; //Nota: Probe con ^TJobInfo1[AW], ^TJobInfo2[AW] jobsInfo2Size :DWORD; MangoPrinter : THandle; GetMem(PrinterInfo2, 1000); Ok := GetPrinter(Integer(MangoPrinter), 2, PrinterInfo2, 1000, @Ocupa); if not Ok then if (Ocupa > 1000) then begin FreeMem(PrinterInfo2); GetMem(PrinterInfo2, Ocupa); GetPrinter(MangoPrinter, 2, PrinterInfo2, Ocupa,@Ocupa); //nota: PrinterInfo2 tiene datos correctos, por lo tanto el MangoPrinter esta correto GetMem(jobsInfo2,1000); //GetJob(hPrinter,JobId,Level,pJob, DWORD cbBuf, pcbNeeded) ok:= GetJob(MangoPrinter,1,2,jobsInfo2,1000,@--+//ret jobsInfo2Size=0 if (not ok) then begin FreeMem(jobsInfo2); GetMem(jobsInfo2,jobsInfo2Size); GetJob(MangoPrinter,1,2,jobsInfo2,jobsInfo2Size,@jobsInfo2Size); end; // y Obiamente falla aqui. ShowMessage('POS:' + intToSTR(jobsInfo2^.Position) ); \---Codigo -------- /--Prototipe Jobs: The GetJob function retrieves print-job data for the specified printer. BOOL GetJob( HANDLE hPrinter, // handle of printer DWORD JobId, // job identifier value DWORD Level, // data-structure level LPBYTE pJob, // address of data-structure array DWORD cbBuf, // count of bytes in array LPDWORD pcbNeeded // address of value that contains count of bytes retrieved (or required) ); \--Prototipe Jobs:
__________________
Aprendamos a ser civilizados |
#2
|
||||
|
||||
Según la MSDN, esta función está disponible en W2k... pero me parece haber leído anteriormente que uno de los services packs de W2k solucionaba problemas del spool, ¿Tenés todos los SP instalados?
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
||||
|
||||
Cita:
tengo win2k Profecional + SP4
__________________
Aprendamos a ser civilizados |
#4
|
||||
|
||||
Cita:
Me resulta extraño que esto falle.. no te prometo, pero si tengo un tiempo lo voy a probar en un W2k sp4 que tengo en un disco removible. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
||||
|
||||
Cita:
POr otro lado, la descripcion de la funcion getJobs dice que esta soportada por NT, win95, como decis... Voy a ver si consigo algo para w2k UNA CORRECCION: me equivoque en la version de Delphi, Uso Delphi 6 en Win2k Profecional + SP4
__________________
Aprendamos a ser civilizados |
#6
|
||||
|
||||
si a alguien le interesa..., ya lo hice andar..
el codigo es correcto, mi error fue de interpretacion del API jobs(), la variable JobId indica un numero unico (similar a PID de procesos) y yo suponia que era la posicion de la cola de imprecion.
__________________
Aprendamos a ser civilizados |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|