共用方式為


IPrintOemPS::Command 方法 (prcomoem.h)

IPrintOemPS::Command 方法會藉由轉譯Microsoft PostScript 印表機驅動程式的外掛程式來使用,以便將 PostScript 命令插入列印作業的數據流中。

語法

HRESULT Command(
        PDEVOBJ   pdevobj,
        DWORD     dwIndex,
        PVOID     pData,
        DWORD     cbSize,
  [out] OUT DWORD *pdwResult
);

參數

pdevobj

DEVOBJ 結構的呼叫端提供的指標。

dwIndex

呼叫端提供的值,表示列印作業數據流中目前插入點。 如需詳細資訊,請參閱下列一節。

pData

未使用。

cbSize

未使用。

[out] pdwResult

接收方法提供的值,指出插入作業的結果。 如果插入成功,此值應該ERROR_SUCCESS。 如果插入失敗,該值應該是 winerror.h 中定義的其中一個錯誤碼。 如果 方法未嘗試插入指定之 dwIndex 值的數據,則此值應該ERROR_NOT_SUPPORTED。

傳回值

方法必須傳回下列其中一個值。

傳回碼 描述
S_OK
作業成功。
E_FAIL
作業失敗
E_NOTIMPL
未實作 方法。

言論

IPrintOemPS::Command 方法可用來將 PostScript 命令插入 Microsoft PostScript 印表機驅動程式所產生的數據流中。 如果您想要提供這個方法,您必須在轉譯外掛程式中定義它。

呼叫 IPrintOemPS::Command 方法時,其 dwIndex 參數會指定列印作業數據流中的目前插入點。 方法應該使用此值來判斷要執行的作業。 下表列出在 wingdi.h 中定義的索引值。

索引值 收到時
PSINJECT_BEGINDEFAULTS 印表機驅動程式傳送 %%BeginDefaults 至數據流之後。
PSINJECT_BEGINPAGESETUP 印表機驅動程式傳送 %%BeginPageSetup 至數據流之後。
PSINJECT_BEGINPROLOG 印表機驅動程式傳送 %%BeginProlog 至數據流之後。
PSINJECT_BEGINSETUP 印表機驅動程式傳送 %%BeginSetup 至數據流之後。
PSINJECT_BEGINSTREAM 印表機驅動程式傳送數據流的第一個字節之前。
PSINJECT_BOUNDINGBOX 當印表機驅動程式準備好將 %%BoundingBox: 插入數據流。 IPrintOemPS::Command 提供的數據會取代驅動程式的 %%BoundingBox: 批注。
PSINJECT_COMMENTS 印表機驅動程式傳送 %%EndComments 至數據流之前。
PSINJECT_DLFONT 列印驅動程序下載柔和字型之前。
PSINJECT_DOCNEEDEDRES 印表機驅動程式傳送 %%DocumentNeededResources之後: 至數據流,以及資源資訊。 如果 IPrintOemPS::Command 方法傳送資源資訊,則會在驅動程式的資源資訊之後附加至數據流。 專案格式如下:

%%+ ResourceTypeResourceNames

印表機驅動程式會在傳送 %%Trailer 區段之後傳送 %%DocumentNeededResources:

PSINJECT_DOCSUPPLIEDRES 印表機驅動程式傳送 %%DocumentSuppliedResources之後: 至數據流,以及資源資訊。 如果 IPrintOemPS::Command 方法傳送資源資訊,則會在驅動程式的資源資訊之後附加至數據流。 專案格式如下:

%%+ ResourceTypeResourceNames

印表機驅動程式會在傳送 %%Trailer 區段之後傳送 %%DocumentSuppliedResources:

PSINJECT_DOCUMENTPROCESSCOLORS
當印表機驅動程式準備好將 %%DocumentProcessColors:色彩 插入數據流。 IPrintOemPS::Command 提供的數據會取代驅動程式的 %%DocumentProcessColors:色彩 批注。
PSINJECT_DOCUMENTPROCESSCOLORSATEND
當印表機驅動程式準備好將 %%DocumentProcessColors:(atend) 插入數據流。 IPrintOemPS::Command 提供的數據會取代驅動程式的 %%DocumentProcessColors:(atend) 批注。
PSINJECT_ENDDEFAULTS 印表機驅動程式傳送 %%EndDefaults 至數據流之前。
PSINJECT_ENDPAGECOMMENTS 印表機驅動程式傳送 %%EndPageComments 至數據流之前。
PSINJECT_ENDPAGESETUP 印表機驅動程式傳送 %%EndPageSetup 至數據流之前。
PSINJECT_ENDPROLOG 印表機驅動程式傳送 %%EndProlog 至數據流之前。
PSINJECT_ENDSETUP 印表機驅動程式傳送 %%EndSetup 至數據流之前。
PSINJECT_ENDSTREAM 印表機驅動程式傳送數據流的最後一個字節之後。
PSINJECT_EOF 印表機驅動程式傳送 %%EOF 至數據流之後。
PSINJECT_ORIENTATION 當印表機驅動程式準備好將 %%Orientation: 插入數據流。 IPrintOemPS::Command 提供的數據會取代驅動程式的 %%Orientation: 批注。
PSINJECT_PAGEBBOX 當印表機驅動程式準備好將 %%PageBoundingBox: 插入數據流。 IPrintOemPS::Command 提供的數據會取代驅動程式的 %%PageBoundingBox: 批注。
PSINJECT_PAGENUMBER 當印表機驅動程式準備好將 %%Page: 插入數據流。 IPrintOemPS::Command 提供的數據會取代驅動程式的 %%Page: 批注。
PSINJECT_PAGEORDER 當印表機驅動程式準備好將 %%PageOrder: 插入數據流。 IPrintOemPS::Command 提供的數據會取代驅動程式的 %%PageOrder: 批注。
PSINJECT_PAGES 當印表機驅動程式準備好將 %%Pages:nnn 插入數據流。 IPrintOemPS::Command 提供的數據會取代驅動程式的 %%Pages:nnn 批注。
PSINJECT_PAGESATEND 當印表機驅動程式準備好將 %%Pages:(atend) 插入數據流。 IPrintOemPS::Command 提供的數據會取代驅動程式的 %%Pages:(atend) 批注。
PSINJECT_PAGETRAILER 印表機驅動程式傳送 %%PageTrailer 至數據流之後。
PSINJECT_PLATECOLOR 當印表機驅動程式準備好將 %%PlateColor:色彩 插入數據流。 IPrintOemPS::Command 提供的數據會取代驅動程式的 %%PlateColor:色彩 批注。
PSINJECT_PSADOBE 印表機驅動程式傳送 %之前!PS-Adobe 數據流。
PSINJECT_SHOWPAGE 印表機驅動程式傳送 showpage 命令之前。
PSINJECT_TRAILER 印表機驅動程式傳送 %%Trailer 至數據流之後。
PSINJECT_VMRESTORE 印表機驅動程式傳送還原 命令之後。 (如果資源要重複使用,IPrintOemPS::Command 方法必須重新傳送在最後一個PSINJECT_VMSAVE之後傳送的所有資源。
PSINJECT_VMSAVE 印表機驅動程式傳送儲存 命令 之前。 (請參閱PSINJECT_VMRESTORE。

IPrintOemPS::Command 方法必須呼叫 IPrintOemDriverPS::D rvWriteSpoolBuf 以插入 PostScript 命令。

如果 IPrintOemPS::Command 方法是由多個轉譯外掛程式匯出,則每次印表機驅動程式到達插入點時,都會依照指定外掛程式進行安裝的順序呼叫方法。 適用下列規則:

  • 如果插入點是一個提供的數據附加至印表機驅動程式提供的數據,則會呼叫每個外掛程式,並允許每個外掛程式附加 PostScript 命令。

  • 如果插入點是其中一個提供的數據取代印表機驅動程式提供的數據,則會呼叫外掛程式,直到 IPrintOemPS::Command 方法提供ERROR_SUCCESS dwResult。 不會呼叫其他外掛程式。 如果所有外掛程式都提供ERROR_NOT_SUPPORTED,則不會取代驅動程式提供的數據。

  • 如果插入點是其中一個提供的數據取代印表機驅動程式所提供的數據,而且如果應用程式已經使用 POSTSCRIPT_INJECTION 印表機逸出函式取代驅動程式提供的數據,則不會呼叫任何外掛程式。

要求

要求 價值
目標平臺 桌面
標頭 prcomoem.h (include Prcomoem.h)