Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-02-2004
Avatar de orfeo
orfeo orfeo is offline
Miembro
 
Registrado: may 2003
Posts: 99
Poder: 22
orfeo Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 13-02-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 21-02-2004
Avatar de orfeo
orfeo orfeo is offline
Miembro
 
Registrado: may 2003
Posts: 99
Poder: 22
orfeo Va por buen camino
Cita:
Empezado por delphi.com.ar
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!
en el api que trae el Delphi 5 dice que es soportado por todos los windws.

tengo win2k Profecional + SP4
__________________
Aprendamos a ser civilizados
Responder Con Cita
  #4  
Antiguo 23-02-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por orfeo
en el api que trae el Delphi 5 dice que es soportado por todos los windws.
Esto es discutible... digamos que cuando salió Delphi 5 creo que Borland lo catalogó como compatible con Win95, Win98 y NT4 (Creo)... ahora, que sea compatible con las versiones futuras ya depende del fabricante del sistema operativo (M$), se supone que W2k es compatible con la aplicaciones compiladas para NT4, pero esto lo garantiza M$!

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.
Responder Con Cita
  #5  
Antiguo 25-02-2004
Avatar de orfeo
orfeo orfeo is offline
Miembro
 
Registrado: may 2003
Posts: 99
Poder: 22
orfeo Va por buen camino
Cita:
Empezado por delphi.com.ar
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!
El codigo es correcto? Es correcto como defino el tamano de la structura jobsInfo2?
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
Responder Con Cita
  #6  
Antiguo 29-04-2004
Avatar de orfeo
orfeo orfeo is offline
Miembro
 
Registrado: may 2003
Posts: 99
Poder: 22
orfeo Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:36:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi