Saludos a todos,
Necesito obtener los datos de la cola de impresión de
Windows. Tengo el ejemplo que está en:
http://support.microsoft.com/defaul...cid=KB;en-
us;q196805
Sucede que no sé cómo obtener además dos datos muy
importantes para mi aplicción en estos momentos: si la
impresión ha sido a color o blanco y negro y el tamaño del
papel.
Parece que en esta función (en "Queue.C") se refrescan los
datos de la cola de impresión:
static BOOL NewJob(JOBDATA *pJob, JOB_INFO_2 *pJI)
{
/* pJob assumed uninitilazed */
ZeroMemory(pJob, sizeof(JOBDATA));
/* Copy the data we want */
pJob->JobId = pJI->JobId;
if (!ReplaceString(&pJob->pszDocument, pJI-
pDocument))
goto Fail;
if (!ReplaceString(&pJob->pszOwner, pJI-
pUserName))
goto Fail;
if (!ReplaceString(&pJob->pszStatus, pJI->pStatus))
goto Fail;
pJob->dwStatus = pJI->Status;
pJob->PagesPrinted = pJI->PagesPrinted;
pJob->TotalPages = pJI->TotalPages;
pJob->Size = pJI->Size;
pJob->Submitted = pJI->Submitted;
pJob->BytesPrinted = 0;
//Trato de accesar a la estrucutura donde
//se encuentran dichos datos (color y tamaño del papel):
LPDEVMODEA apDevMode;
int tam;
apDevMode=pJI->pDevMode;
tam=apDevMode->dmPaperSize;//<-error aquí!
//Unhandled exception in Printjob.exe 0xC0000005:Access
//Violation
/*cuando pongo un breakpoint en esta función, puedo
ver datos como:
+ pMachineName 0x007903ad "\\PC 03"
pero obtengo una dirección nula para:
+ pDevMode 0x00000000
por lo que no puedo accesar a los datos de la
estrucutura a la que apunta pDevMode
¿Cómo puedo accesar a dichos datos?
*/
/* Initialize the changed data to now chagnes */
memset(&pJob->Changed, (char)TRUE, sizeof(pJob-
Changed));
return TRUE;
/* Bail when failure occurs */
Fail:
FreeJob(pJob);
return FALSE;
} /* end of function NewJob */
Gracias de antemano.
Juvenal León
Leer las respuestas