管理打印机

Shell API 提供可用于管理网络打印机的函数。 如果文件具有与之关联的 打印 谓词,可以使用 ShellExecuteEx 命令来打印它。

打印机管理

可以使用 SHInvokePrinterCommand 函数管理系统上的打印机。 此函数允许你:

  • 安装打印机。
  • 打开打印机。
  • 获取打印机属性。
  • 创建打印机链接。
  • 打印测试页面。

使用 ShellExecuteEx 打印文件

如果文件类型具有与之关联的打印命令,可以通过调用带打印作为谓词的 ShellExecuteEx 来打印该文件。 此命令通常与用于 打开 谓词的命令相同,并添加一个标志,以告知应用程序打印文件。 例如,Microsoft WordPad 可以打印.txt文件。 因此,.txt文件的 打开 谓词对应于类似于以下命令的内容:

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

使用 ShellExecuteEx 打印.txt文件时,WordPad 会打开该文件,打印该文件,然后关闭,将控件返回到应用程序。 下面的示例函数采用完全限定的路径,并使用 ShellExecuteEx 来打印它,并使用与其文件扩展名关联的 print 命令。

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