Поделиться через


Управление принтерами

API оболочки предоставляет функции, которые можно использовать для управления сетевыми принтерами. Если с файлом связана команда печати, можно использовать команду ShellExecuteEx для печати.

Управление принтерами

Вы можете управлять принтерами в системе с помощью функции SHInvokePrinterCommand. Эта функция позволяет:

  • Установите принтеры.
  • Откройте принтеры.
  • Получить свойства принтера.
  • Создайте ссылки на принтер.
  • Печать тестовой страницы.

Печать файлов с помощью ShellExecuteEx

Если с типом файла связана команда на печать, можно распечатать файл, вызвав ShellExecuteEx с печать в качестве глагола. Эта команда часто та же, что используется для открытого глагола, с добавлением флага, чтобы приложение напечатало файл. Например, .txt файлы можно распечатать с помощью Microsoft WordPad. Таким образом, открыть команду для файла .txt будет соответствовать следующей команде:

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

При использовании ShellExecuteEx для печати файла .txt WordPad открывает файл, выводит его, а затем закрывает, возвращая элемент управления в приложение. Функция-пример ниже принимает полный квалифицированный путь и использует ShellExecuteEx для печати, применяя команду печати, связанную с расширением имени файла.

#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;
}