Je suis confronté à un comportement étrange - il semble qu'il est impossible d'enumérer des résolutions pour les imprimantes à encre Epson dans Windows. en particulier ce code signale toujours l'erreur:Appel WinAPI à DeviceCapabilities (DC_ENUMRESOLUTIONS) pour Epson P50 signaler toujours l'erreur
int r, err;
char szBuffer[0x4000];
String prnName = "EPSON P50 Series";
String portName = "USB002";
r = DeviceCapabilities(prnName.c_str(), portName.c_str(), DC_ENUMRESOLUTIONS, NULL, NULL);
err = GetLastError();
printf("\n 1.DevCap.result = %d, err = %d", r, err);
r = DeviceCapabilities(prnName.c_str(), portName.c_str(), DC_ENUMRESOLUTIONS, szBuffer, NULL);
err = GetLastError();
printf("\n 2.DevCap.result = %d, err = %d", r, err);
En sortie, je vois ce qui suit:
1.DevCap.result = -1, err = 0
2.DevCap.result = -1, err = 13
Note: erreur de Windows 13 est ERROR_INVALID_DATA
.
Pourriez-vous s'il vous plaît m'aider à comprendre - comment interpréter cela correctement? Cela signifie-t-il que les pilotes des imprimantes à encre Epson ne fournissent aucune information sur les résolutions d'impression prises en charge? Ou y a-t-il vraiment des paramètres invalides? Si oui, lequel pourrait-il être?
Merci d'avance.
PS. Veuillez noter les points suivants:
1) Les noms d'imprimante et de port sont corrects. Ils sont obtaines avec l'appel WinAPI EnumPrinters()
. Dans cet exemple de code, je coupe tout code non pertinent, donc ne gardez que les fonctions qui échouent.
2) L'imprimante elle-même fonctionne correctement, je peux y imprimer des documents et des photos.
3) J'ai également ajouté une imprimante "Epson Stylus 300" qui est configurée pour utiliser le port "FILE:" pour l'impression. Et la chose intéressante - un appel à DeviceCapabilities(DC_ENUMRESOLUTIONS)
pour une telle imprimante signale également erreur 13. C'est pourquoi je incline à penser que toutes les imprimantes à encre Epson ne fournissent aucune information sur la résolution d'impression ...
4) Tous les autres appels à DeviceCapabilities()
fonction (pour DC_PAPERS, DC_PAPERSIZE
, DC_PAPERNAMES
, etc) fonctionne très bien pour ces imprimantes (Epson P50 et Epson Stylus 300). Ainsi, le nom de l'imprimante et le nom du port sont corrects, le problème n'existe que pour l'appel DeviceCapabilities(DC_ENUMRESOLUTIONS)
.
Il devrait être simple. Très probablement, ces deux imprimantes ne prennent pas en charge l'indicateur 'DC_ENUMRESOLUTIONS'. Installez une imprimante d'une autre société, cela fonctionnera probablement. –
Oui, je sais que cela fonctionne pour d'autres imprimantes. Ce logiciel a fonctionné pendant des années, seulement maintenant quand j'essaye d'imprimer à Epson j'ai eu ce problème. Je suis juste un peu perplexe que l'imprimante ne fournit pas la liste des résolutions prises en charge et ce que cela signifie pour moi? Puis-je spécifier résolution = 12345 alors et s'attendre à voir l'impression correcte? –