Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Information : Utilisation des noms d'imprimante longs

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

La version anglaise de cet article est la suivante: 240082
Résumé
Systèmes d'exploitation Microsoft Windows peuvent gérer les imprimantes dont le nom dépasse 32 caractères. Toutefois, le nom d'une imprimante dans une structure DEVMODE ne doit pas dépasser 32 caractères. Cet article explique ce conflit et comment les applications Microsoft Windows résoudre il.
Plus d'informations
Lorsqu'une application Microsoft Windows imprime, elle doit identifier l'imprimante cible par son nom complet. La structure DEVMODE qui a été introduite dans la version de Windows 16 bits 3.1 a une limite de 32 caractères pour un nom d'imprimante. Toutefois, les noms d'imprimante dans les systèmes d'exploitation Win32 peuvent être beaucoup plus longues.

Sur des plates-formes Win32, le nom d'imprimante complète ou long est donné par le membre pPrinterName de la structure PRINTER_INFO_2 ou par la structure DEVNAMES . La structure PRINTER_INFO_2 peut être obtenue à partir de la fonction EnumPrinters . La structure DEVNAMES peut être obtenue par un appel à la PrintDlg ou PrintDlgEx pour remplir une structure PRINTDLG(EX) . La structure DEVNAMES est gérée par un handle de mémoire globale retourné dans la structure PRINTDLG(EX) .

Le membre pPrinterName de la structure PRINTER_INFO_2 et le nom du périphérique (wDeviceOffset désigne le nom de l'imprimante) dans la structure DEVNAMES sont des pointeurs vers un tampon de chaîne. Parce qu'ils sont des pointeurs vers une chaîne, ils n'ont pas une limite de 32 caractères et contient le nom long d'imprimante de l'imprimante cible. Consultez la Documentation du Platform SDK pour une description de la structure PRINTDLG(EX) et de la structure DEVNAMES .

Certaines applications devront ouvrir une imprimante par nom lors de l'impression pour un contexte de périphérique d'imprimante. Une telle situation se produit lorsque l'application est la modification des paramètres de la mémoire tampon DEVMODE comme décrit dans l'article suivant de la Base de connaissances Microsoft :
167345 Comment faire : Modifier les paramètres de l'imprimante avec DocumentProperties()
Le nom long ne peut pas être obtenu à partir d'un handle à un élément devicecontext d'imprimante ou de la mémoire tampon DEVMODE . L'application doit conserver une référence indépendante à l'imprimante. Une référence à l'imprimante peut prendre la forme d'une chaîne qui contient le nom long, un tampon DEVNAMES ou un handle vers une imprimante qui peut être utilisé dans un appel de fonction GetPrinter .

La fonction GetPrinter peut remplir une seule structure PRINTER_INFO_2 beaucoup la fonction EnumPrinters peut récupérer plusieurs de ces structures. Étant donné que les modifications appropriées à un DEVMODE nécessitent également un handle vers une imprimante, une telle poignée est une référence pratique à l'imprimante.

Le nom long peut être utilisé pour obtenir un handle vers une imprimante par l'intermédiaire de la fonction OpenPrinter , afin que le nom long est également une référence pratique à l'imprimante. Il peut être stocké séparément ou en tant que partie d'une structure DEVNAMES .

Le nom de l'imprimante dans un tampon DEVNAMES est stocké dans l'espace alloué au-delà de la structure DEVNAMES . Pour rechercher la chaîne de nom d'imprimante dans la mémoire tampon DEVNAMES , vous pouvez utiliser le membre wDeviceOffset pour calculer une valeur de pointeur est basée sur le début de la structure DEVNAMES .

Le fragment de code suivant illustre la technique par la création d'un contexte de périphérique d'imprimante à partir d'un DEVNAMES et une structure DEVMODE :
HDC CreateDeviceContext( DEVMODE *pDevMode, DEVNAMES *pDevNames ){    LPCTSTR     szDriver;    LPCTSTR     szDevice;    LPCTSTR     szOutput;    szDriver = (LPCTSTR)pDevNames+pDevNames->wDriverOffset;    szDevice = (LPCTSTR)pDevNames+pDevNames->wDeviceOffset;    szOutput = (LPCTSTR)pDevNames+pDevNames->wOutputOffset;    return CreateDC(szDriver, szDevice, szOutput, pDevMode);}				
Références
DEVMODE
http://msdn.Microsoft.com/en-us/library/aa927408.aspx

DEVNAMES
http://msdn.Microsoft.com/en-us/library/aa925881.aspx

PRINTER_INFO_2
http://msdn.Microsoft.com/en-us/library/bb401711.aspx

PRINTDLG
http://msdn.Microsoft.com/en-us/library/ms910661.aspx

PRINTDLGEX
http://msdn.Microsoft.com/en-us/library/ms646844.aspx

GetPrinter
http://msdn.Microsoft.com/en-us/library/aa977825 (VS.71).aspx

EnumPrinters
http://msdn.Microsoft.com/en-us/library/ms536005 (VS.85).aspx

OpenPrinter
http://msdn.Microsoft.com/en-us/library/aa907473.aspx

PrintDlgEx
http://msdn.Microsoft.com/en-us/library/ms646942 (VS.85).aspx

Pour plus d'informations concernant les mémoires tampons DEVMODE, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
167345 Comment faire : Modifier les paramètres de l'imprimante avec DocumentProperties()

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 240082 - Dernière mise à jour : 08/16/2015 22:27:00 - Révision : 4.0

  • kbdswgdi2003swept kbdevcontext kbgdi kbinfo kbprint kbspooler kbmt KB240082 KbMtfr
Commentaires
>