Partager via


Gestion des imprimantes

L’API Shell fournit des fonctions que vous pouvez utiliser pour gérer les imprimantes réseau. Si le verbe d’impression est associé à un fichier, vous pouvez utiliser la commande ShellExecuteEx pour l’imprimer.

Gestion des imprimantes

Vous pouvez gérer les imprimantes sur un système avec la fonction SHInvokePrinterCommand . Cette fonction vous permet de :

  • Installez des imprimantes.
  • Ouvrez les imprimantes.
  • Obtenir les propriétés de l’imprimante.
  • Créer des liens d’imprimante.
  • Imprimez une page de test.

Impression de fichiers avec ShellExecuteEx

Si une commande print est associée à un type de fichier, vous pouvez imprimer le fichier en appelant ShellExecuteEx avec print comme verbe. Cette commande est souvent la même que celle utilisée pour le verbe ouvert , avec l’ajout d’un indicateur pour indiquer à l’application d’imprimer le fichier. Par instance, .txt fichiers peuvent être imprimés par Microsoft WordPad. Le verbe ouvert d’un fichier .txt correspondrait donc à quelque chose comme la commande suivante :

"C:\Program Files\Windows NT\Accessories\Wordpad.exe" /p "%1"

Lorsque vous utilisez ShellExecuteEx pour imprimer un fichier .txt, WordPad ouvre le fichier, l’imprime, puis se ferme, ce qui renvoie le contrôle à l’application. L’exemple de fonction suivant prend un chemin complet et utilise ShellExecuteEx pour l’imprimer à l’aide de la commande print associée à son extension de nom de fichier.

#include <shlobj.h>

HINSTANCE PrintFile(LPCTSTR pszFileName)
{
    SHELLEXECUTEINFO ShExecInfo;
    HINSTANCE hInst;

    // Fill the SHELLEXECUTEINFO array.

    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    ShExecInfo.fMask = NULL;
    ShExecInfo.hwnd = NULL;
    ShExecInfo.lpVerb = "print";
    ShExecInfo.lpFile = pszFileName;  // a fully qualified path
    ShExecInfo.lpParameters = NULL;
    ShExecInfo.lpDirectory = NULL;    
    ShExecInfo.nShow = SW_MAXIMIZE;
    ShExecInfo.hInstApp = NULL;

    hInst = ShellExecuteEx(&ShExecInfo);
    
    return hInst;
}