Verwalten von Druckern

Die Shell-API stellt Funktionen bereit, die Sie zum Verwalten von Netzwerkdruckern verwenden können. Wenn einer Datei das Druckverb zugeordnet ist, können Sie sie mit dem ShellExecuteEx-Befehl drucken.

Druckerverwaltung

Sie können Drucker auf einem System mit der SHInvokePrinterCommand-Funktion verwalten. Diese Funktion ermöglicht Ihnen:

  • Installieren Sie Drucker.
  • Öffnen Sie Drucker.
  • Abrufen von Druckereigenschaften.
  • Erstellen sie Druckerlinks.
  • Drucken Sie eine Testseite.

Drucken von Dateien mit ShellExecuteEx

Wenn einem Dateityp ein Druckbefehl zugeordnet ist, können Sie die Datei drucken, indem Sie ShellExecuteEx mit print als Verb aufrufen. Dieser Befehl entspricht häufig dem Befehl für das geöffnete Verb mit dem Hinzufügen eines Flags, um die Anwendung an weisen, die Datei zu drucken. Beispielsweise können .txt Dateien von Microsoft WordPad gedruckt werden. Das geöffnete Verb für eine .txt-Datei würde daher in etwa dem folgenden Befehl entsprechen:

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

Wenn Sie ShellExecuteEx zum Drucken einer .txt-Datei verwenden, öffnet WordPad die Datei, druckt sie und schließt sie und gibt die Steuerung an die Anwendung zurück. Die folgende Beispielfunktion verwendet einen vollqualifizierten Pfad und verwendet ShellExecuteEx, um ihn mithilfe des Befehls print zu drucken, der der Dateinamenerweiterung zugeordnet ist.

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