detection d'imprimante sous win 2000

detection d'imprimante sous win 2000 - C++ - Programmation

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

Citation :


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
Reply

Marsh Posté le 22-10-2004 à 11:35:13   

Reply

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 :oops:  
 
et au deuxieme appel, tout fonctionne parfaitement.  
 
voilaaaaa

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed