DeviceCapabilities
を使用してネットワークプリンタのサポートされているページサイズのリストを取得しようとしており、sPort
パラメータと完全に混同しています。ネットワークプリンタのデバイス能力
DWORD nPapersCount = ::DeviceCapabilities(sPrinter, sPort, DC_PAPERS, nullptr, nullptr);
誰もが、私を提案でした私は、ネットワークプリンタ用のスポーツに何を提供する必要がありますし、どのように私は確実にそのポートを得ることができましたか?
実験では、 "\\ Share"という形式の "\\ Share \ LPT1"という形式のPC名を試しましたが、 "LPT1"だけで運がありません。
また、私はEnumPorts
の機能を見つけたので、リモートサーバー上のプリンタポートの一覧を取得できましたが、サーバー上の複数のプリンタのポートの一覧をどう扱うかわかりません。
typedef struct _PORT_INFO_2 { LPTSTR pPortName; LPTSTR pMonitorName; LPTSTR pDescription; DWORD fPortType; DWORD Reserved; } PORT_INFO_2, *PPORT_INFO_2;
は 'PRINTDLGに' hDevMode'、 'hDevNames'、と' hDC'ハンドルを解放することを忘れないでください '構造体を使用し終わった後。 'GlobalFree()'と 'DeleteDC()'を使ってください。あなたは 'PD_RETURNDC'が必要ですか?あなたは何でも 'hDC'を使用していません。 –
@RemyLebeau割り当てがないので、 'GlobalFree'は必要ありません。 DCもありません。 'PD_RETURNDC'は不要で、削除しました。 –
['PRINTDLG'](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646843.aspx)のドキュメントには、' hDevMode'と 'hDevNames'がNULLの場合に割り当てられることが明確に書かれています入力。それは、 'PD_RETURNDEFAULT'がその動作を変更するかどうかということです。それは、システムのデフォルトプリンタを処理するように設定されているということだけです。彼らは割り当てられていますか?またはそれらは静的でOSによって所有されていますか?ドキュメンテーションはどちらか一方の方法を言いません。しかし、ほとんどの 'PD_RETURNDEFAULT'の例では' GlobalFree() 'を呼び出すことができます。 –