detection d'imprimante sous win 2000 - C++ - Programmation
Marsh Posté le 22-10-2004 à 12:30:08
Bon, je vien de trouver mon erreur
aprés avoir relu msdn une Nieme fois, je me suis apperçut que la fonction retournais 0 si on lui passe une taille de buffer insuffisante, d'ou mon erreur
et au deuxieme appel, tout fonctionne parfaitement.
voilaaaaa
Marsh Posté le 22-10-2004 à 11:35:13
Salut à tous
jvous explique mon problème :
je travaille sous win 2000 et j'essaye de detecter toutes les imprimantes installées afin de pouvoir imprimer des alertes sur differentes imprimantes.
J'utilise la fonction EnumPrinters
EnumPrinters(
DWORD Flags, // printer object types
LPTSTR Name, // name of printer object
DWORD Level, // information level
LPBYTE pPrinterEnum, // printer information buffer
DWORD cbBuf, // size of printer information buffer
LPDWORD pcbNeeded, // bytes received or required
LPDWORD pcReturned // number of printers enumerated
);
la fonction retourne toujours 0 (erreur)
j'ai essayé plusieur combinaisons :
un flag PRINTER_ENUM_CONNECTIONS | PRINTER_ENUM_LOCAL; avec un level 4
afin de choper les imprimantes locales et celles auquel on s'est deja connecté.
pcbNeeded vaut 46 et pcReturned vaut 0, alors qu'il y a bien des imprimantes installées.
petite precision, le code d'erreur obtenu avec GetLastError() esst 122: :The data area passed to a system call is too small.
et je vois pas quelle est la zone de donnée en question. si c'est le buffer, il est normal qu'il soit null au premier appel de la fonction.
donc si quequ'un voit ou je fais une erreur, ben, merci de m'en faire part
Message édité par _ky_ le 22-10-2004 à 11:53:37