|
| 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 :
FUNCTIONiPrinterGetStatus(pPrinterName=iInfoImprimante()) hdPrint,RetAPI,cbBuf,pcbNeededsont desentiers sPrinterNameest une chaîne ASCIIZ sur512=pPrinterName tPRINTERest un_PRINTER_INFO_2 PRINTER_INFO_LEVELest un entier=2 BufferAPIest unBuffer
RetAPI=API(winspool_drv,"OpenPrinterA", &sPrinterName, &hdPrint,Null) IFRetAPI=0THEN 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) IFRetAPI=0THEN API(winspool_drv,"ClosePrinter",hdPrint) RENVOYER"" END
API(winspool_drv,"ClosePrinter",hdPrint)
Transfert(&tPRINTER, &BufferAPI,Dimension(tPRINTER))
ServeurNameest une chaîne=ChaîneRécupère(tPRINTER:pServerName,crAdresseASCIIZ) PrinterNameest une chaîne=ChaîneRécupère(tPRINTER:pPrinterName,crAdresseASCIIZ) ShareNameest une chaîne=ChaîneRécupère(tPRINTER:pShareName,crAdresseASCIIZ) PortNameest une chaîne=ChaîneRécupère(tPRINTER:pPortName,crAdresseASCIIZ) DriverNameest une chaîne=ChaîneRécupère(tPRINTER:pDriverName,crAdresseASCIIZ) Commentest une chaîne=ChaîneRécupère(tPRINTER:pComment,crAdresseASCIIZ) Locationest une chaîne=ChaîneRécupère(tPRINTER:pLocation,crAdresseASCIIZ) DevModeest une chaîne=ChaîneRécupère(tPRINTER:pDevMode,crAdresseASCIIZ) SepFileest une chaîne=ChaîneRécupère(tPRINTER:pSepFile,crAdresseASCIIZ) PrintProcessorest une chaîne=ChaîneRécupère(tPRINTER:pPrintProcessor,crAdresseASCIIZ) sDatatypeest une chaîne=ChaîneRécupère(tPRINTER:pDatatype,crAdresseASCIIZ) Parametresest une chaîne="" Attributest un entier système=tPRINTER:Attributes Priorityest un entier système=tPRINTER:Priority DefaultPriorityest un entier système=tPRINTER:DefaultPriority StartTimeest un entier système=tPRINTER:StartTime UntilTimeest un entier système=tPRINTER:UntilTime Statusest un entier système=tPRINTER:Status cJobsest un entier système=tPRINTER:cJobs AveragePPMest un entier système=tPRINTER:AveragePPM
Resultatest 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
RENVOYERResultat 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 |
| |
| |
| | | |
|
| | | | |
| | |
|