Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La API de Shell proporciona funciones que puede usar para administrar impresoras en red. Si un archivo tiene asociado el verbo de impresión , puede usar el comando ShellExecuteEx para imprimirlo.
Administración de impresoras
Puede administrar impresoras en un sistema con la función SHInvokePrinterCommand . Esta función le permite:
- Instale impresoras.
- Abra impresoras.
- Obtiene las propiedades de la impresora.
- Crear vínculos de impresora.
- Imprima una página de prueba.
Imprimir archivos con ShellExecuteEx
Si un tipo de archivo tiene asociado un comando de impresión, puede imprimir el archivo llamando a ShellExecuteEx con print como verbo. Este comando suele ser el mismo que el usado para el verbo abierto , con la adición de una marca para indicar a la aplicación que imprima el archivo. Por ejemplo, Microsoft WordPad puede imprimir .txt archivos. El verbo abierto de un archivo .txt correspondería por lo tanto a algo parecido al siguiente comando:
"C:\Program Files\Windows NT\Accessories\Wordpad.exe" /p "%1"
Cuando se usa ShellExecuteEx para imprimir un archivo de .txt, WordPad abre el archivo, lo imprime y, a continuación, lo cierra y devuelve el control a la aplicación. La siguiente función de ejemplo toma una ruta de acceso completa y usa ShellExecuteEx para imprimirla mediante el comando print asociado a su extensión de nombre de archivo.
#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;
}