Gerenciar impressoras
A API do Shell fornece funções que você pode usar para gerenciar impressoras em rede. Se um arquivo tiver o verbo de impressão associado a ele, você poderá usar o comando ShellExecuteEx para imprimi-lo.
Você pode gerenciar impressoras em um sistema com a função SHInvokePrinterCommand . Essa função permite que você:
- Instalar impressoras.
- Abrir impressoras.
- Obter propriedades da impressora.
- Criar links de impressora.
- Imprima uma página de teste.
Se um tipo de arquivo tiver um comando de impressão associado a ele, você poderá imprimir o arquivo chamando ShellExecuteEx com print como o verbo. Esse comando geralmente é o mesmo usado para o verbo aberto , com a adição de um sinalizador para instruir o aplicativo a imprimir o arquivo. Por exemplo, .txt arquivos podem ser impressos pelo Microsoft WordPad. O verbo aberto para um arquivo .txt corresponderia, portanto, a algo semelhante ao seguinte comando:
"C:\Program Files\Windows NT\Accessories\Wordpad.exe" /p "%1"
Quando você usa ShellExecuteEx para imprimir um arquivo .txt, o WordPad abre o arquivo, imprime-o e, em seguida, fecha, retornando o controle para o aplicativo. A função de exemplo a seguir usa um caminho totalmente qualificado e usa ShellExecuteEx para imprimi-lo, usando o comando print associado à sua extensão de nome de arquivo.
#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;
}