Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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;
}