Win32 API 日本語リファレンス
ホームNetworking.ActiveDirectory › IADsPrintQueue

IADsPrintQueue

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDb15160d0-1226-11cf-a985-00aa006bc149継承元IADs呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl20

公式ドキュメント

IADsPrintQueue インターフェイスは、ネットワーク上のプリンターを表します。

解説(Remarks)

このインターフェイスは、印刷キュー内の印刷ジョブのコレクションを参照するために使用します。ネットワーク越しにプリンターを制御するには、IADsPrintQueueOperations インターフェイスを使用します。印刷ジョブのコレクションを取得するには、IADsPrintQueueOperations::PrintJobs メソッドを呼び出します。

Windows では、プリンター(すなわち印刷キュー)はホストコンピューターによって管理されます。印刷キューへのパスがわかっている場合は、他の ADSI オブジェクトと同様にバインドします。

次の Visual Basic コード例は、バインド操作を示しています。

Dim pq as IADsPrintQueue
Set pq = GetObject("WinNT://aMachine/aPrinter")

次の C++ コード例は、バインド操作を示しています。

IADsPrintQueue *pq;
LPWSTR adsPath = L"WinNT://aMachine/aPrinter";
HRESULT hr = ADsGetObject(adsPath,
                          IID_IADsPrintQueue,
                          (void**)&pq);

指定したコンピューター上のすべての印刷キューを列挙するには

  1. コンピューターオブジェクトにバインドします。
  2. コンピューターに "PrintQueue" オブジェクトが含まれているかどうかを確認します。
  3. 見つかったすべてのプリンターオブジェクトを列挙します。

次のコード例は、指定したコンピューター上のプリンターを列挙します。

Dim cont As IADsContainer
Dim pq As IADsPrintQueue

On Error GoTo Cleanup
 
' Bind to the computer object
Set cont = GetObject("WinNT://fabrikam1,computer")

cont.Filter = Array("PrintQueue")

For Each p In cont
   Set pq = GetObject(p.ADsPath)
   MsgBox pq.Name & " is a " & pq.Model
Next p

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set cont = Nothing
    Set pq = Nothing

メソッド 26

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 20 HRESULT get_PrinterPath(LPWSTR* retval)
retvalLPWSTR*outプリンターを示すパス(共有名等)を受け取る出力先。BSTRで返る。
vtbl 21 HRESULT put_PrinterPath(LPWSTR bstrPrinterPath)
bstrPrinterPathLPWSTRin設定するプリンターのパス(共有名等)をBSTRで指定する。
vtbl 22 HRESULT get_Model(LPWSTR* retval)
retvalLPWSTR*outプリンターの機種・モデル名を受け取る出力先。BSTRで返る。
vtbl 23 HRESULT put_Model(LPWSTR bstrModel)
bstrModelLPWSTRin設定するプリンターの機種・モデル名をBSTRで指定する。
vtbl 24 HRESULT get_Datatype(LPWSTR* retval)
retvalLPWSTR*out印刷ジョブのデータ型(RAW/EMF等)を受け取る出力先。BSTRで返る。
vtbl 25 HRESULT put_Datatype(LPWSTR bstrDatatype)
bstrDatatypeLPWSTRin設定する印刷ジョブのデータ型(RAW/EMF等)をBSTRで指定する。
vtbl 26 HRESULT get_PrintProcessor(LPWSTR* retval)
retvalLPWSTR*out使用する印刷プロセッサ名を受け取る出力先。BSTRで返る。
vtbl 27 HRESULT put_PrintProcessor(LPWSTR bstrPrintProcessor)
bstrPrintProcessorLPWSTRin設定する印刷プロセッサ名をBSTRで指定する。
vtbl 28 HRESULT get_Description(LPWSTR* retval)
retvalLPWSTR*outプリントキューの説明文字列を受け取る出力先。BSTRで返る。
vtbl 29 HRESULT put_Description(LPWSTR bstrDescription)
bstrDescriptionLPWSTRin設定するプリントキューの説明文字列をBSTRで指定する。
vtbl 30 HRESULT get_Location(LPWSTR* retval)
retvalLPWSTR*outプリンターの物理的設置場所を受け取る出力先。BSTRで返る。
vtbl 31 HRESULT put_Location(LPWSTR bstrLocation)
bstrLocationLPWSTRin設定するプリンターの設置場所をBSTRで指定する。
vtbl 32 HRESULT get_StartTime(DOUBLE* retval)
retvalDOUBLE*out印刷を受け付け開始する時刻を受け取る出力先。OLE日付値(DOUBLE)で返る。
vtbl 33 HRESULT put_StartTime(DOUBLE daStartTime)
daStartTimeDOUBLEin設定する印刷受付開始時刻をOLE日付値(DOUBLE)で指定する。
vtbl 34 HRESULT get_UntilTime(DOUBLE* retval)
retvalDOUBLE*out印刷受付を終了する時刻を受け取る出力先。OLE日付値(DOUBLE)で返る。
vtbl 35 HRESULT put_UntilTime(DOUBLE daUntilTime)
daUntilTimeDOUBLEin設定する印刷受付終了時刻をOLE日付値(DOUBLE)で指定する。
vtbl 36 HRESULT get_DefaultJobPriority(INT* retval)
retvalINT*out印刷ジョブの既定の優先度を受け取る出力先。INT*で返る。
vtbl 37 HRESULT put_DefaultJobPriority(INT lnDefaultJobPriority)
lnDefaultJobPriorityINTin設定する印刷ジョブの既定優先度を指定する。
vtbl 38 HRESULT get_Priority(INT* retval)
retvalINT*outプリントキュー自体の優先度を受け取る出力先。INT*で返る。
vtbl 39 HRESULT put_Priority(INT lnPriority)
lnPriorityINTin設定するプリントキューの優先度を指定する。
vtbl 40 HRESULT get_BannerPage(LPWSTR* retval)
retvalLPWSTR*out区切り(バナー)ページのファイルパスを受け取る出力先。BSTRで返る。
vtbl 41 HRESULT put_BannerPage(LPWSTR bstrBannerPage)
bstrBannerPageLPWSTRin設定するバナーページのファイルパスをBSTRで指定する。
vtbl 42 HRESULT get_PrintDevices(VARIANT* retval)
retvalVARIANT*outこのキューに紐づく印刷デバイス一覧を受け取る出力先。文字列配列のVARIANTで返る。
vtbl 43 HRESULT put_PrintDevices(VARIANT vPrintDevices)
vPrintDevicesVARIANTin設定する印刷デバイス一覧を文字列配列のVARIANTで指定する。
vtbl 44 HRESULT get_NetAddresses(VARIANT* retval)
retvalVARIANT*outプリンターのネットワークアドレス一覧を受け取る出力先。文字列配列のVARIANTで返る。
vtbl 45 HRESULT put_NetAddresses(VARIANT vNetAddresses)
vNetAddressesVARIANTin設定するプリンターのネットワークアドレス一覧を文字列配列のVARIANTで指定する。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IADsPrintQueue "{B15160D0-1226-11CF-A985-00AA006BC149}"
#usecom global IADsPrintQueue IID_IADsPrintQueue "{}"
#comfunc global IADsPrintQueue_get_PrinterPath         20 var
#comfunc global IADsPrintQueue_put_PrinterPath         21 wstr
#comfunc global IADsPrintQueue_get_Model               22 var
#comfunc global IADsPrintQueue_put_Model               23 wstr
#comfunc global IADsPrintQueue_get_Datatype            24 var
#comfunc global IADsPrintQueue_put_Datatype            25 wstr
#comfunc global IADsPrintQueue_get_PrintProcessor      26 var
#comfunc global IADsPrintQueue_put_PrintProcessor      27 wstr
#comfunc global IADsPrintQueue_get_Description         28 var
#comfunc global IADsPrintQueue_put_Description         29 wstr
#comfunc global IADsPrintQueue_get_Location            30 var
#comfunc global IADsPrintQueue_put_Location            31 wstr
#comfunc global IADsPrintQueue_get_StartTime           32 var
#comfunc global IADsPrintQueue_put_StartTime           33 double
#comfunc global IADsPrintQueue_get_UntilTime           34 var
#comfunc global IADsPrintQueue_put_UntilTime           35 double
#comfunc global IADsPrintQueue_get_DefaultJobPriority  36 var
#comfunc global IADsPrintQueue_put_DefaultJobPriority  37 int
#comfunc global IADsPrintQueue_get_Priority            38 var
#comfunc global IADsPrintQueue_put_Priority            39 int
#comfunc global IADsPrintQueue_get_BannerPage          40 var
#comfunc global IADsPrintQueue_put_BannerPage          41 wstr
#comfunc global IADsPrintQueue_get_PrintDevices        42 var
#comfunc global IADsPrintQueue_put_PrintDevices        43 int
#comfunc global IADsPrintQueue_get_NetAddresses        44 var
#comfunc global IADsPrintQueue_put_NetAddresses        45 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。