|
| Etat de l'imprimante solution qui fonctionne |
| Débuté par akaiispam, 22 oct. 2013 04:20 - 6 réponses |
| |
| | | |
|
| |
| Posté le 22 octobre 2013 - 04:20 |
Hello tout le monde,
Voilà mon problème, je cherche depuis un moment à récupérer l'état de l'imprimante USB et tous les exemples de codes que je trouve sur ce forum ne satisfont pas les exigences de l'application que je veux écrire ou ne fonctionnent pas.
J'aimerai mettre deux imprimantes à la suite qui imprime en tandem, mais pour cela je dois vérifier en continu que l'une et l'autre imprimante imprime bien.
J'ai donc testé certains codes dont celui décrit dans le lien ci-dessous, mais le status que je reçois n'est pas cohérent avec l'état concret de l'imprimante. De plus je ne comprends pas pourquoi le retour de la fonction se fait dans un tableau dynamique... http://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/search/page/1.awp…
Bref j'aurai bien besoin d'un coup de main |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 948 messages |
|
| Posté le 22 octobre 2013 - 10:56 |
| |
| |
| | | |
|
| | |
| |
| Posté le 24 octobre 2013 - 02:28 |
Bonjour Philippe et merci pour ton code
J'aimerai toutefois te poser une question sur celui-ci. Est-ce normal que l'on ne récupère pas le code d'erreur (exemple bourrage papier) de l'imprimante et si oui, peut-on selon toi le récupérer?
Mon imprimante est une Samsung branchée en USB.
Merci d'avance de ton aide |
| |
| |
| | | |
|
| | |
| |
| Posté le 24 octobre 2013 - 05:53 |
Hello Philippe et merci pour ton code
J'ai tout de même besoin de te demander si c'est normal de ne pas avoir de statut d'imprimante pour le bourrage papier (ou capot ouvert ou autre), mais juste l'info 0 ou 1 si ça imprime? si oui as-tu trouver le moyen de récupérer cette erreur?
Pour info je teste ça sur une imprimante Samsung USB, directement connectée à l'ordi sur lequel je teste ton code.
Cordialement |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 948 messages |
|
| Posté le 24 octobre 2013 - 11:20 |
Bonjour Quand votre imprimante est en bourrage papier, es-que Windows l’indique dans la gestion des imprimantes ? Si oui , alors il va vous falloir debugger cette vieille collection… Comme elle date déjà de quelques années cela ne lui fera pas de mal d’être rafraîchie à la sauce W18. |
| |
| |
| | | |
|
| | |
| |
| Posté le 19 février 2017 - 12:22 |
Bonjour toujours en 2017 4 ans apres le poste est status retourne toujours 0 dans tous les cas une idée svp ?? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 948 messages |
|
| Posté le 20 février 2017 - 12:55 |
Bonjour je viens de sortir du carton ma vieille imprimante pour tester ce très vieux bout de code et voici les corrections apportées :
FUNCTION iPrinterGetStatus(pPrinterName=iInfoImprimante()) hdPrint, RetAPI, cbBuf, pcbNeeded sont des entiers sPrinterName est une chaîne ASCIIZ sur 512 = pPrinterName tPRINTER est un _PRINTER_INFO_2 PRINTER_INFO_LEVEL est un entier = 2 BufferAPI est un Buffer
RetAPI = API( winspool_drv, "OpenPrinterA" , &sPrinterName, &hdPrint, Null) IF RetAPI = 0 THEN RENVOYER ""
cbBuf = 0 pcbNeeded = 0 RetAPI = API( winspool_drv, "GetPrinterA", hdPrint, PRINTER_INFO_LEVEL, &tPRINTER, cbBuf, &pcbNeeded)
cbBuf = pcbNeeded BufferAPI = Répète(Caract(0x00), cbBuf)
RetAPI = API( winspool_drv, "GetPrinterA" , hdPrint, PRINTER_INFO_LEVEL, &BufferAPI, cbBuf, &pcbNeeded) IF RetAPI = 0 THEN API(winspool_drv, "ClosePrinter" , hdPrint) RENVOYER "" END
API(winspool_drv,"ClosePrinter", hdPrint)
Transfert(&tPRINTER, &BufferAPI, Dimension(tPRINTER))
ServeurName est une chaîne = ChaîneRécupère( tPRINTER:pServerName, crAdresseASCIIZ) PrinterName est une chaîne = ChaîneRécupère( tPRINTER:pPrinterName, crAdresseASCIIZ) ShareName est une chaîne = ChaîneRécupère( tPRINTER:pShareName, crAdresseASCIIZ) PortName est une chaîne = ChaîneRécupère( tPRINTER:pPortName, crAdresseASCIIZ) DriverName est une chaîne = ChaîneRécupère( tPRINTER:pDriverName, crAdresseASCIIZ) Comment est une chaîne = ChaîneRécupère( tPRINTER:pComment, crAdresseASCIIZ) Location est une chaîne = ChaîneRécupère( tPRINTER:pLocation, crAdresseASCIIZ) DevMode est une chaîne = ChaîneRécupère( tPRINTER:pDevMode, crAdresseASCIIZ) SepFile est une chaîne = ChaîneRécupère( tPRINTER:pSepFile, crAdresseASCIIZ) PrintProcessor est une chaîne = ChaîneRécupère( tPRINTER:pPrintProcessor, crAdresseASCIIZ) sDatatype est une chaîne = ChaîneRécupère( tPRINTER:pDatatype, crAdresseASCIIZ) Parametres est une chaîne = "" Attribut est un entier système = tPRINTER:Attributes Priority est un entier système = tPRINTER:Priority DefaultPriority est un entier système = tPRINTER:DefaultPriority StartTime est un entier système = tPRINTER:StartTime UntilTime est un entier système = tPRINTER:UntilTime Status est un entier système = tPRINTER:Status cJobs est un entier système = tPRINTER:cJobs AveragePPM est un entier système = tPRINTER:AveragePPM
Resultat est une chaîne = "" Resultat += ServeurName + TAB Resultat += PrinterName + TAB Resultat += ShareName + TAB Resultat += PortName + TAB Resultat += DriverName + TAB Resultat += Comment + TAB Resultat += Location + TAB Resultat += DevMode + TAB Resultat += SepFile + TAB Resultat += PrintProcessor + TAB Resultat += sDatatype + TAB Resultat += Parametres + TAB Resultat += NumériqueVersChaîne(Attribut) + TAB Resultat += NumériqueVersChaîne(Priority) + TAB Resultat += NumériqueVersChaîne(DefaultPriority) + TAB Resultat += NumériqueVersChaîne(StartTime) + TAB Resultat += NumériqueVersChaîne(UntilTime) + TAB Resultat += NumériqueVersChaîne(Status) + TAB Resultat += NumériqueVersChaîne(cJobs) + TAB Resultat += NumériqueVersChaîne(AveragePPM) + TAB
RENVOYER Resultat testé avec Win7-Windev20-Printer USB Je pense que le status représente plus le status du spooler que de l'imprimante physique. Si l'imprimante est éteinte, que le spooler soit vide ou pas on obtient 0.
prête avec papier et toner => 0 en pause => 1 plus de papier => 16 |
| |
| |
| | | |
|
| | | | |
| | |
|