<Return[O]><Top>

OpenPrinter

Declare Function Api_OpenPrinter& Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName$, phPrinter&, pDefault As Any)

Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long

指定されたプリンタまたはプリントサーバーを識別するハンドルを取得する。

パラメータ
pPrinterName
    プリンタ名、またはプリントサーバー名を表す、NULL で終わる文字列へのポインタを指定する。
    Windows NT/2000:NULL を指定すると、ローカルのプリントサーバーを意味する。
phPrinter
    1 つの変数へのポインタを指定する。

    関数から制御が返ると、この変数に、開かれたプリンタオブジェクト、またはプリントサーバーオブジェクトを表すハンドルが返る。
    Windows 2000:phPrinter パラメータに、XcvData 関数で使うための Xcv ハンドルが返ることがある。
pDefault
    1 個の PRINTER_DEFAULTS 構造体へのポインタを指定する。このパラメータには NULL を指定することもできる。


戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    pDefault パラメータでデータタイプとデバイスモード値を指定できる。

    これらの値は、StartDocPrinter 関数を使ってドキュメントを印刷する目的で使われる。

    しかし、ドキュメントを開始した後も SetJob 関数を使うと、これらの値を再設定できる。
    OpenPrinter 関数を使って、プリントサーバーのハンドルを開いたり、プリントサーバーに対するクライアントのアクセス権を調べることができ

    る。これらの作業を行うには、pPrinterName パラメータにプリントサーバー名を指定し、PRINTER_DEFAULTS 構造体の pDatatype メ

    ンバと pDevMode メンバを NULL に設定し、DesiredAccess メンバに、SERVER_ALL_ACCESS のようなサーバーアクセスのマスク値を設

    定する。返されたハンドルを WaitForPrinterChange 関数へ渡すこともできる。ハンドルを使い終わったときは、ClosePrinter 関数にその

    ハンドルを渡して閉じる。
    Windows 95/98:OpenPrinter 関数は、PRINTER_DEFAULTS 構造体の DesiredAccess メンバを無視する。
    Windows NT/2000:開発者がプリンタで必要とするアクセス権を指定するには、PRINTER_DEFAULTS 構造体の DesiredAccess メンバ

    を使う。アクセス権として、次のいずれかを指定する。
    希望のアクセスの

    値                                                     

意味                                                                                                                 

    PRINTER_ACCESS_ADMINISTER

管理作業を行うには、SetPrinter が提供するアクセス権などを指定する。

    PRINTER_ACCESS_USE

基本的な印刷作業を行う場合に指定する。

    PRINTER_ALL_ACCESS

SYNCHRONIZE を除き、すべての管理作業と基本的な印刷作業を行う場合に指定する。

    WRITE_DAC のような汎用のセキュリティの値     特定の制御アクセス権を認める場合に指定する。
    プリンタやプリントサーバーに対して特定のアクセスを要求した際に、ユーザーがプリンタやプリントサーバーを開くための権限を備えていない場

    合、OpenPrinter 関数は失敗する。GetLastError 関数を使うと、ERROR_ACCESS_DENIED が返る。