|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
Home → WINDEV 2024 → Prob de recuperation du nb total de page dans un spool (EnumJobsA) |
Prob de recuperation du nb total de page dans un spool (EnumJobsA) |
Started by romain.frebourg, Apr., 07 2006 6:09 PM - 4 replies |
| |
| | | |
|
| |
Posted on April, 07 2006 - 6:09 PM |
Bonjour,
J'utilise la fonction API EnumJobsA de windev 10, pour récupérer des informations du spool d'une imprimante. j'arrive à recupérer certain paramètres :
SI pJob[z]:pPrinterName<>0 ALORS Transfert(&Buf,pJob[z]:pPrinterName,2047);sListedesfichier += Buf+";" SI pJob[z]:pUserName<>0 ALORS Transfert(&Buf,pJob[z]:pUserName,2047);sListedesfichier += Buf+";" SI pJob[z]:pDocument<>0 ALORS Transfert(&Buf,pJob[z]:pDocument,2047);sListedesfichier += Buf+";" SI pJob[z]:pNotifyName<>0 ALORS Transfert(&Buf,pJob[z]:pNotifyName,2047);sListedesfichier += Buf+";" SI pJob[z]:pParameters<>0 ALORS Transfert(&Buf,pJob[z]:pParameters,2047);sListedesfichier += Buf+";" SI pJob[z]:pDriverName<>0 ALORS Transfert(&Buf,pJob[z]:pDriverName,2047);sListedesfichier += Buf+";" SI pJob[z]:pStatus<>0 ALORS Transfert(&Buf,pJob[z]:pStatus,2047);sListedesfichier += Buf+";" // je n'est pas de valeur pour ces deux fonctions, mais pas d'erreur car elles sont null.
SI pJob[z]:StartTime<>0 ALORS Transfert(&Buf,pJob[z]:StartTime,2047);sListedesfichier += Buf+";" SI pJob[z]:UntilTime<>0 ALORS Transfert(&Buf,pJob[z]:UntilTime,2047);sListedesfichier += Buf+";"
mais pour ceux-ci : J'ai une erreur du type : Vous avez appelé la fonction Transfert. L'adresse source fournie (0x00000007 sur 2047 octets) est invalide. Elle ne représente pas une adresse mémoire valide en lecture.
SI pJob[z]:TotalPages<>0 ALORS Transfert(&Buf,pJob[z]:TotalPages,2047);sListedesfichier += Buf+";" SI pJob[z]:PagesPrinted<>0 ALORS Transfert(&Buf,pJob[z]:PagesPrinted,2047);sListedesfichier += Buf+";"
Ci dessous mes structures :
//STRUCTURE UTILISER : DEVMODEA est une structure dmDeviceName est une chaîne fixe sur 32 //Type C : BYTE dmSpecVersion est un entier sur 2 octets //Type C : WORD dmDriverVersion est un entier sur 2 octets //Type C : WORD dmSize est un entier sur 2 octets //Type C : WORD dmDriverExtra est un entier sur 2 octets //Type C : WORD dmFields est un entier sur 4 octets sans signe //Type C : DWORD dmOrientation est un entier sur 2 octets //Type C : short dmPaperSize est un entier sur 2 octets //Type C : short dmPaperLength est un entier sur 2 octets //Type C : short dmPaperWidth est un entier sur 2 octets //Type C : short dmScale est un entier sur 2 octets //Type C : short dmCopies est un entier sur 2 octets //Type C : short dmDefaultSource est un entier sur 2 octets //Type C : short dmPrintQuality est un entier sur 2 octets //Type C : short dmColor est un entier sur 2 octets //Type C : short dmDuplex est un entier sur 2 octets //Type C : short dmYResolution est un entier sur 2 octets //Type C : short dmTTOption est un entier sur 2 octets //Type C : short dmCollate est un entier sur 2 octets //Type C : short dmFormName est une chaîne fixe sur 32 //Type C : BYTE dmLogPixels est un entier sur 2 octets //Type C : WORD dmBitsPerPel est un entier sur 4 octets sans signe //Type C : DWORD dmPelsWidth est un entier sur 4 octets sans signe //Type C : DWORD dmPelsHeight est un entier sur 4 octets sans signe //Type C : DWORD dmDisplayFlags est un entier sur 4 octets sans signe //Type C : DWORD dmDisplayFrequency est un entier sur 4 octets sans signe //Type C : DWORD dmICMMethod est un entier sur 4 octets sans signe //Type C : DWORD dmICMIntent est un entier sur 4 octets sans signe //Type C : DWORD dmMediaType est un entier sur 4 octets sans signe //Type C : DWORD dmDitherType est un entier sur 4 octets sans signe //Type C : DWORD dmICCManufacturer est un entier sur 4 octets sans signe //Type C : DWORD dmICCModel est un entier sur 4 octets sans signe //Type C : DWORD dmPanningWidth est un entier sur 4 octets sans signe //Type C : DWORD dmPanningHeight est un entier sur 4 octets sans signe //Type C : DWORD FIN PRINTER_DEFAULTSA est une structure pDatatype est un entier //Type C : LPSTR pDevMode est un entier //LPDEVMODEA Pointeur sur DEVMODEA DesiredAccess est un entier //Type ACCESS_MASK non retrouvé (entier est le type le plus fréquent, mais à VERIFIER) FIN //********************** Fin de la déclaration des structures pour <OpenPrinterA>
//********************** Debut de declaration de la structure pour la fonction EnumJob SYSTEMTIME est une structure wYear est un entier sur 2 octets //Type C : WORD wMonth est un entier sur 2 octets //Type C : WORD wDayOfWeek est un entier sur 2 octets //Type C : WORD wDay est un entier sur 2 octets //Type C : WORD wHour est un entier sur 2 octets //Type C : WORD wMinute est un entier sur 2 octets //Type C : WORD wSecond est un entier sur 2 octets //Type C : WORD wMilliseconds est un entier sur 2 octets //Type C : WORD FIN JOB_INFO_2A est une structure JobId est un entier sur 4 octets sans signe //Type C : DWORD pPrinterName est un entier //Type C : LPSTR pMachineName est un entier //Type C : LPSTR pUserName est un entier //Type C : LPSTR pDocument est un entier //Type C : LPSTR pNotifyName est un entier //Type C : LPSTR pDatatype est un entier //Type C : LPSTR pPrintProcessor est un entier //Type C : LPSTR pParameters est un entier //Type C : LPSTR pDriverName est un entier //Type C : LPSTR pDevMode est un entier //LPDEVMODEA Pointeur sur DEVMODEA pStatus est un entier //Type C : LPSTR pSecurityDescriptor est un entier //Type PSECURITY_DESCRIPTOR non retrouvé (entier est le type le plus fréquent, mais à VERIFIER) Status est un entier sur 4 octets sans signe //Type C : DWORD Priority est un entier sur 4 octets sans signe //Type C : DWORD Positions est un entier sur 4 octets sans signe //Type C : DWORD StartTime est un entier sur 4 octets sans signe //Type C : DWORD UntilTime est un entier sur 4 octets sans signe //Type C : DWORD TotalPages est un entier sur 4 octets sans signe //Type C : DWORD Size est un entier sur 4 octets sans signe //Type C : DWORD Submitted est un SYSTEMTIME //SYSTEMTIME est une autre structure Time est un entier sur 4 octets sans signe //Type C : DWORD PagesPrinted est un entier sur 4 octets sans signe //Type C : DWORD FIN
CODE UTILISER POUR ENUMERER LES JOBS D'UN SPOOL
PROCEDURE Enumjob(Nomimprimante) // TEST
nRetourFonction est un entier=0 // //Paramètre de la fonction API OpenPrinterA pPrinterName est une chaîne ASCIIZ sur 512 = Nomimprimante // (IN)*** nom de l'imprmante à ouvrir hdPrint est un entier // (OUT)*** Pointeur sur une variable qui recoit le handle de l'imprimante ouverte pDefault est un entier = Null // (IN)*** Pointeur sur structure LPPRINTER_DEFAULTSA
nRetourFonction=API("WINSPOOL.DRV","OpenPrinterA",&pPrinterName,&hdPrint,&pDefault)
//Paramètre de la fonction API EnumJobA hPrinter est un entier // (IN)*** handle de l'imprimante à ouvrir FirstJob est un entier // (IN)*** =0 specifie que l'énumération des jobs commencent au premier job NoJobs est un entier // (IN)*** spécifie le nombre de job à enumérer Level est un entier // (IN)*** specifie le type d'information retourner dans le buffer pjob. (1=JOB_INFO_1,2=JOB_INFO_2,3=JOB_INFO_3) pJob est un tableau dynamique de 14000 JOB_INFO_2A // (OUT)*** Pointeur d'un buffer qui recoit un tableau d'une structure JOB_INFO_2 cbBuf est un entier // (IN)*** Specifie la taille en bytes du buffer pJob pcbNeeded est un entier // (OUT)*** Pointer d'une variable qui recoit le nombre de bytes copié si la fonction est OK // Si la fonction est FAUX alors la variable recoit le nombre de bytes requis pcReturned est un entier // (OUT)*** Pointeur d'une variable qui recoit le nombre de structure (JOB_INFO_2) retourner dans le buffer pJob
//declaration pour l'extraction du tableau dynamique pJob z est un entier = 1 //compteur Buf est une chaîne ASCIIZ sur 2048 = "" // (OUT) pointeur sur une variable contenant le bloc de destination sListedesfichier est une chaîne //info du spool de l'imprimante
//Si l'immprimante à bien été ouverte SI nRetourFonction > 0 ALORS //Lance une fois pour obtenir le nombre d'octet dont on a besoin : pcbNeeded hPrinter=hdprint //attribution du handle creé par OpenPrint FirstJob=0 NoJobs00 Level=2 cbBuf=1 nRetourFonction=API("WINSPOOL.DRV","EnumJobsA",hPrinter,FirstJob,NoJobs,Level,&pJob,cbBuf,&pcbNeeded,&pcReturned) //LAnce une seconde fois pour obtenir le nombre de job dans la file d'attente : pcReturned nRetourFonction=API("WINSPOOL.DRV","EnumJobsA",hPrinter,FirstJob,NoJobs,Level,&pJob,pcbNeeded,&pcbNeeded,&pcReturned) nnbdoc est un entier nnbdoc=pcReturned //Attribution du nombre de Job à la variable nnbdoc //Si la fonction à fonctionné SI nRetourFonction > 0 ALORS SI nnbdoc > 0 ALORS POUR z=1 A nnbdoc SI z=1 ALORS sListedesfichier="PagesPrinted;pDocument;pDriverName;pMachineName;pNotifyName;pParameters;pPrinterName;pStatus;pUserName;Size;StartTime;UntilTime;Time;TotalPages" SINON sListedesfichier += CRLF FIN SI pJob[z]:pPrinterName<>0 ALORS Transfert(&Buf,pJob[z]:pPrinterName,2047);sListedesfichier += Buf+";" SI pJob[z]:pUserName<>0 ALORS Transfert(&Buf,pJob[z]:pUserName,2047);sListedesfichier += Buf+";" SI pJob[z]:pDocument<>0 ALORS Transfert(&Buf,pJob[z]:pDocument,2047);sListedesfichier += Buf+";" SI pJob[z]:pNotifyName<>0 ALORS Transfert(&Buf,pJob[z]:pNotifyName,2047);sListedesfichier += Buf+";" SI pJob[z]:pParameters<>0 ALORS Transfert(&Buf,pJob[z]:pParameters,2047);sListedesfichier += Buf+";" SI pJob[z]:pDriverName<>0 ALORS Transfert(&Buf,pJob[z]:pDriverName,2047);sListedesfichier += Buf+";" SI pJob[z]:pStatus<>0 ALORS Transfert(&Buf,pJob[z]:pStatus,2047);sListedesfichier += Buf+";" SI pJob[z]:StartTime<>0 ALORS Transfert(&Buf,pJob[z]:StartTime,2047);sListedesfichier += Buf+";" SI pJob[z]:UntilTime<>0 ALORS Transfert(&Buf,pJob[z]:UntilTime,2047);sListedesfichier += Buf+";" SI pJob[z]:TotalPages<>0 ALORS Transfert(&Buf,pJob[z]:TotalPages,2047);sListedesfichier += Buf+";" SI pJob[z]:Size<>0 ALORS Transfert(&Buf,pJob[z]:Size,2047);sListedesfichier += Buf+";" SI pJob[z]:Time<>0 ALORS Transfert(&Buf,pJob[z]:Time,2047);sListedesfichier += Buf+";" SI pJob[z]:PagesPrinted<>0 ALORS Transfert(&Buf,pJob[z]:PagesPrinted,2047);sListedesfichier += Buf+";" FIN //Fermeture de la connexion à l'imprimante API("WINSPOOL.DRV","ClosePrinter",hPrinter) SINON //Fermeture de la connexion à l'imprimante API("WINSPOOL.DRV","ClosePrinter",hPrinter) Info("echec1 nbdoc pas supérieur à zero") FIN SINON //Fermeture de la connexion à l'imprimante API("WINSPOOL.DRV","ClosePrinter",hPrinter) Info("echec2 la fonction API n'a pas fonctionné") FIN SINON Info("Impossible d'ouvrir l'imprimante") FIN
Je ne comprend pourquoi avec les variables déclarées en temps que DWORD ma fonction transfert retourne le code d'erreur ci-dessus?
Merci d'avance
Romano |
| |
| |
| | | |
|
| | |
| |
Posted on April, 07 2006 - 7:05 PM |
Romano a formulé la demande :
Bonjour,
J'utilise la fonction API EnumJobsA de windev 10, pour récupérer des informations du spool d'une imprimante. j'arrive à recupérer certain paramètres :
SI pJob[z]:pPrinterName<>0 ALORS Transfert(&Buf,pJob[z]:pPrinterName,2047);sListedesfichier += Buf+";" SI pJob[z]:pUserName<>0 ALORS Transfert(&Buf,pJob[z]:pUserName,2047);sListedesfichier += Buf+";" SI pJob[z]:pDocument<>0 ALORS Transfert(&Buf,pJob[z]:pDocument,2047);sListedesfichier += Buf+";" SI pJob[z]:pNotifyName<>0 ALORS Transfert(&Buf,pJob[z]:pNotifyName,2047);sListedesfichier += Buf+";" SI pJob[z]:pParameters<>0 ALORS Transfert(&Buf,pJob[z]:pParameters,2047);sListedesfichier += Buf+";" SI pJob[z]:pDriverName<>0 ALORS Transfert(&Buf,pJob[z]:pDriverName,2047);sListedesfichier += Buf+";" SI pJob[z]:pStatus<>0 ALORS Transfert(&Buf,pJob[z]:pStatus,2047);sListedesfichier += Buf+";" // je n'est pas de valeur pour ces deux fonctions, mais pas d'erreur car elles sont null.
SI pJob[z]:StartTime<>0 ALORS Transfert(&Buf,pJob[z]:StartTime,2047);sListedesfichier += Buf+";" SI pJob[z]:UntilTime<>0 ALORS Transfert(&Buf,pJob[z]:UntilTime,2047);sListedesfichier += Buf+";"
mais pour ceux-ci : J'ai une erreur du type : Vous avez appelé la fonction Transfert. L'adresse source fournie (0x00000007 sur 2047 octets) est invalide. Elle ne représente pas une adresse mémoire valide en lecture.
SI pJob[z]:TotalPages<>0 ALORS Transfert(&Buf,pJob[z]:TotalPages,2047);sListedesfichier += Buf+";" SI pJob[z]:PagesPrinted<>0 ALORS Transfert(&Buf,pJob[z]:PagesPrinted,2047);sListedesfichier += Buf+";"
Ci dessous mes structures :
//STRUCTURE UTILISER : DEVMODEA est une structure dmDeviceName est une chaîne fixe sur 32 //Type C : BYTE dmSpecVersion est un entier sur 2 octets //Type C : WORD dmDriverVersion est un entier sur 2 octets //Type C : WORD dmSize est un entier sur 2 octets //Type C : WORD dmDriverExtra est un entier sur 2 octets //Type C : WORD dmFields est un entier sur 4 octets sans signe //Type C : DWORD dmOrientation est un entier sur 2 octets //Type C : short dmPaperSize est un entier sur 2 octets //Type C : short dmPaperLength est un entier sur 2 octets //Type C : short dmPaperWidth est un entier sur 2 octets //Type C : short dmScale est un entier sur 2 octets //Type C : short dmCopies est un entier sur 2 octets //Type C : short dmDefaultSource est un entier sur 2 octets //Type C : short dmPrintQuality est un entier sur 2 octets //Type C : short dmColor est un entier sur 2 octets //Type C : short dmDuplex est un entier sur 2 octets //Type C : short dmYResolution est un entier sur 2 octets //Type C : short dmTTOption est un entier sur 2 octets //Type C : short dmCollate est un entier sur 2 octets //Type C : short dmFormName est une chaîne fixe sur 32 //Type C : BYTE dmLogPixels est un entier sur 2 octets //Type C : WORD dmBitsPerPel est un entier sur 4 octets sans signe //Type C : DWORD dmPelsWidth est un entier sur 4 octets sans signe //Type C : DWORD dmPelsHeight est un entier sur 4 octets sans signe //Type C : DWORD dmDisplayFlags est un entier sur 4 octets sans signe //Type C : DWORD dmDisplayFrequency est un entier sur 4 octets sans signe //Type C : DWORD dmICMMethod est un entier sur 4 octets sans signe //Type C : DWORD dmICMIntent est un entier sur 4 octets sans signe //Type C : DWORD dmMediaType est un entier sur 4 octets sans signe //Type C : DWORD dmDitherType est un entier sur 4 octets sans signe //Type C : DWORD dmICCManufacturer est un entier sur 4 octets sans signe //Type C : DWORD dmICCModel est un entier sur 4 octets sans signe //Type C : DWORD dmPanningWidth est un entier sur 4 octets sans signe //Type C : DWORD dmPanningHeight est un entier sur 4 octets sans signe //Type C : DWORD FIN PRINTER_DEFAULTSA est une structure pDatatype est un entier //Type C : LPSTR pDevMode est un entier //LPDEVMODEA Pointeur sur DEVMODEA DesiredAccess est un entier //Type ACCESS_MASK non retrouvé (entier est le type le plus fréquent, mais à VERIFIER) FIN //********************** Fin de la déclaration des structures pour <OpenPrinterA>
//********************** Debut de declaration de la structure pour la fonction EnumJob SYSTEMTIME est une structure wYear est un entier sur 2 octets //Type C : WORD wMonth est un entier sur 2 octets //Type C : WORD wDayOfWeek est un entier sur 2 octets //Type C : WORD wDay est un entier sur 2 octets //Type C : WORD wHour est un entier sur 2 octets //Type C : WORD wMinute est un entier sur 2 octets //Type C : WORD wSecond est un entier sur 2 octets //Type C : WORD wMilliseconds est un entier sur 2 octets //Type C : WORD FIN JOB_INFO_2A est une structure JobId est un entier sur 4 octets sans signe //Type C : DWORD pPrinterName est un entier //Type C : LPSTR pMachineName est un entier //Type C : LPSTR pUserName est un entier //Type C : LPSTR pDocument est un entier //Type C : LPSTR pNotifyName est un entier //Type C : LPSTR pDatatype est un entier //Type C : LPSTR pPrintProcessor est un entier //Type C : LPSTR pParameters est un entier //Type C : LPSTR pDriverName est un entier //Type C : LPSTR pDevMode est un entier //LPDEVMODEA Pointeur sur DEVMODEA pStatus est un entier //Type C : LPSTR pSecurityDescriptor est un entier //Type PSECURITY_DESCRIPTOR non retrouvé (entier est le type le plus fréquent, mais à VERIFIER) Status est un entier sur 4 octets sans signe //Type C : DWORD Priority est un entier sur 4 octets sans signe //Type C : DWORD Positions est un entier sur 4 octets sans signe //Type C : DWORD StartTime est un entier sur 4 octets sans signe //Type C : DWORD UntilTime est un entier sur 4 octets sans signe //Type C : DWORD TotalPages est un entier sur 4 octets sans signe //Type C : DWORD Size est un entier sur 4 octets sans signe //Type C : DWORD Submitted est un SYSTEMTIME //SYSTEMTIME est une autre structure Time est un entier sur 4 octets sans signe //Type C : DWORD PagesPrinted est un entier sur 4 octets sans signe //Type C : DWORD FIN
CODE UTILISER POUR ENUMERER LES JOBS D'UN SPOOL
PROCEDURE Enumjob(Nomimprimante) // TEST
nRetourFonction est un entier=0 // //Paramètre de la fonction API OpenPrinterA pPrinterName est une chaîne ASCIIZ sur 512 = Nomimprimante // (IN)*** nom de l'imprmante à ouvrir hdPrint est un entier // (OUT)*** Pointeur sur une variable qui recoit le handle de l'imprimante ouverte pDefault est un entier = Null // (IN)*** Pointeur sur structure LPPRINTER_DEFAULTSA
nRetourFonction=API("WINSPOOL.DRV","OpenPrinterA",&pPrinterName,&hdPrint,&pDefault)
//Paramètre de la fonction API EnumJobA hPrinter est un entier // (IN)*** handle de l'imprimante à ouvrir FirstJob est un entier // (IN)*** =0 specifie que l'énumération des jobs commencent au premier job NoJobs est un entier // (IN)*** spécifie le nombre de job à enumérer Level est un entier // (IN)*** specifie le type d'information retourner dans le buffer pjob. (1=JOB_INFO_1,2=JOB_INFO_2,3=JOB_INFO_3) pJob est un tableau dynamique de 14000 JOB_INFO_2A // (OUT)*** Pointeur d'un buffer qui recoit un tableau d'une structure JOB_INFO_2 cbBuf est un entier // (IN)*** Specifie la taille en bytes du buffer pJob pcbNeeded est un entier // (OUT)*** Pointer d'une variable qui recoit le nombre de bytes copié si la fonction est OK // Si la fonction est FAUX alors la variable recoit le nombre de bytes requis pcReturned est un entier // (OUT)*** Pointeur d'une variable qui recoit le nombre de structure (JOB_INFO_2) retourner dans le buffer pJob
//declaration pour l'extraction du tableau dynamique pJob z est un entier = 1 //compteur Buf est une chaîne ASCIIZ sur 2048 = "" // (OUT) pointeur sur une variable contenant le bloc de destination sListedesfichier est une chaîne //info du spool de l'imprimante
//Si l'immprimante à bien été ouverte SI nRetourFonction > 0 ALORS //Lance une fois pour obtenir le nombre d'octet dont on a besoin : pcbNeeded hPrinter=hdprint //attribution du handle creé par OpenPrint FirstJob=0 NoJobs00 Level=2 cbBuf=1 nRetourFonction=API("WINSPOOL.DRV","EnumJobsA",hPrinter,FirstJob,NoJobs,Level,&pJob,cbBuf,&pcbNeeded,&pcReturned) //LAnce une seconde fois pour obtenir le nombre de job dans la file d'attente : pcReturned nRetourFonction=API("WINSPOOL.DRV","EnumJobsA",hPrinter,FirstJob,NoJobs,Level,&pJob,pcbNeeded,&pcbNeeded,&pcReturned) nnbdoc est un entier nnbdoc=pcReturned //Attribution du nombre de Job à la variable nnbdoc //Si la fonction à fonctionné SI nRetourFonction > 0 ALORS SI nnbdoc > 0 ALORS POUR z=1 A nnbdoc SI z=1 ALORS sListedesfichier="PagesPrinted;pDocument;pDriverName;pMachineName;pNotifyName;pParameters;pPrinterName;pStatus;pUserName;Size;StartTime;UntilTime;Time;TotalPages" SINON sListedesfichier += CRLF FIN SI pJob[z]:pPrinterName<>0 ALORS Transfert(&Buf,pJob[z]:pPrinterName,2047);sListedesfichier += Buf+";" SI pJob[z]:pUserName<>0 ALORS Transfert(&Buf,pJob[z]:pUserName,2047);sListedesfichier += Buf+";" SI pJob[z]:pDocument<>0 ALORS Transfert(&Buf,pJob[z]:pDocument,2047);sListedesfichier += Buf+";" SI pJob[z]:pNotifyName<>0 ALORS Transfert(&Buf,pJob[z]:pNotifyName,2047);sListedesfichier += Buf+";" SI pJob[z]:pParameters<>0 ALORS Transfert(&Buf,pJob[z]:pParameters,2047);sListedesfichier += Buf+";" SI pJob[z]:pDriverName<>0 ALORS Transfert(&Buf,pJob[z]:pDriverName,2047);sListedesfichier += Buf+";" SI pJob[z]:pStatus<>0 ALORS Transfert(&Buf,pJob[z]:pStatus,2047);sListedesfichier += Buf+";" SI pJob[z]:StartTime<>0 ALORS Transfert(&Buf,pJob[z]:StartTime,2047);sListedesfichier += Buf+";" SI pJob[z]:UntilTime<>0 ALORS Transfert(&Buf,pJob[z]:UntilTime,2047);sListedesfichier += Buf+";" SI pJob[z]:TotalPages<>0 ALORS Transfert(&Buf,pJob[z]:TotalPages,2047);sListedesfichier += Buf+";" SI pJob[z]:Size<>0 ALORS Transfert(&Buf,pJob[z]:Size,2047);sListedesfichier += Buf+";" SI pJob[z]:Time<>0 ALORS Transfert(&Buf,pJob[z]:Time,2047);sListedesfichier += Buf+";" SI pJob[z]:PagesPrinted<>0 ALORS Transfert(&Buf,pJob[z]:PagesPrinted,2047);sListedesfichier += Buf+";" FIN //Fermeture de la connexion à l'imprimante API("WINSPOOL.DRV","ClosePrinter",hPrinter) SINON //Fermeture de la connexion à l'imprimante API("WINSPOOL.DRV","ClosePrinter",hPrinter) Info("echec1 nbdoc pas supérieur à zero") FIN SINON //Fermeture de la connexion à l'imprimante API("WINSPOOL.DRV","ClosePrinter",hPrinter) Info("echec2 la fonction API n'a pas fonctionné") FIN SINON Info("Impossible d'ouvrir l'imprimante") FIN
Je ne comprend pourquoi avec les variables déclarées en temps que DWORD ma fonction transfert retourne le code d'erreur ci-dessus?
Merci d'avance
Romano
regardez ici : http://windevapi.free.fr/forum1.php… vous y trouverez peut être votre bonheur
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | |
| |
Posted on April, 09 2006 - 11:25 PM |
Salut
je n'ai pas WD sous la main mais rapidement il est certain que la fonction transfert ne fonctionne pas avec les DWORD parce que la valeur n'est pas une adresse. En théorie il vous serait donc possible d'y accéder directement.
info("Nombre de pages total:"+pJob[z]:TotalPages)
L'erreur: L'adresse source fournie (0x00000007... me laisse donc croire que 7 serait le nombre de pages total.
Il vous serait toujours possible de faire un transfert de la manière suivante: Transfert(&Buf,&pJob[z]:TotalPages,4) Transfert(&Buf,&pJob[z]:PagesPrinted,4) Mais je ne vois pas l'utilité
Mathieu |
| |
| |
| | | |
|
| | |
| |
Posted on April, 10 2006 - 1:12 PM |
Cela fonctionne c'était bien le nombre de page 7 qui se trouvais dans l'adresse mémoire.
Merci
Romano |
| |
| |
| | | |
|
| | |
| |
Posted on April, 10 2006 - 4:19 PM |
A la place de l'adresse ip de ton serveur met l'alias. en espérant t'aider a+ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|