Share via


ExtEscape 函式 (wingdi.h)

ExtEscape 函式可讓應用程式存取無法透過 GDI 取得的裝置功能。

語法

int ExtEscape(
  [in]  HDC    hdc,
  [in]  int    iEscape,
  [in]  int    cjInput,
  [in]  LPCSTR lpInData,
  [in]  int    cjOutput,
  [out] LPSTR  lpOutData
);

參數

[in] hdc

裝置內容的句柄。

[in] iEscape

要執行的逸出函式。 它可以是下列其中一項,也可以是應用程式定義的逸出函式。

意義
CHECKJPEGFORMAT
檢查印表機是否支援 JPEG 影像。
CHECKPNGFORMAT
檢查印表機是否支援 PNG 影像。
DRAWPATTERNRECT
繪製白色、灰階或黑色矩形。
GET_PS_FEATURESETTING
取得 PostScript 驅動程式所指定功能設定的相關信息。
GETTECHNOLOGY
報告驅動程式是否為 Postscript 驅動程式。
PASSTHROUGH
允許應用程式將數據直接傳送至印表機。 支援相容性模式和 GDI 中心模式。
POSTSCRIPT_DATA
允許應用程式將數據直接傳送至印表機。 僅支援相容性模式。
POSTSCRIPT_IDENTIFY
將 PostScript 驅動程式設定為 GDI 中心或 PostScript 中心模式。
POSTSCRIPT_INJECTION
在 PostScript 作業數據流中插入原始數據的區塊。
POSTSCRIPT_PASSTHROUGH
將數據直接傳送至 PostScript 印表機驅動程式。 支援相容性模式和 PostScript 中心模式。
QUERYESCSUPPORT
判斷設備驅動器是否實作特定的逸出。
SPCLPASSTHROUGH2
可讓應用程式在檔層級儲存內容中包含私用程式和其他資源。

[in] cjInput

lpszInData 參數所指向之數據的位元組數目。

[in] lpInData

指定逸出所需的輸入結構的指標。 請參閱<備註>。

[in] cjOutput

lpszOutData 參數所指向之數據的位元元組數目。

[out] lpOutData

從這個逸出接收輸出之 結構的指標。 如果 ExtEscape 被呼叫為查詢函式,則此參數不得為 NULL。 如果未在此結構中傳回任何數據,請將 cbOutput 設定為 0。 請參閱<備註>。

傳回值

傳回值會指定函式的結果。 如果函式成功,則會大於零,但 QUERYESCSUPPORT 印表機逸出除外,只會檢查實作。 如果未實作逸出,則傳回值為零。 小於零的傳回值表示錯誤。

備註

注意 這是封鎖或同步函式,可能不會立即傳回。 此函式傳回的速度取決於運行時間因素,例如網路狀態、列印伺服器設定和印表機驅動程序實作—撰寫應用程式時難以預測的因素。 從管理與使用者介面互動的線程呼叫此函式,可能會使應用程式看起來沒有回應。
 
使用此函式將驅動程式定義的逸出值傳遞至裝置。

使用 Escape 函式將其中一個系統定義的逸出值傳遞至裝置,除非逸出是 nEscape 中定義的逸出之一。 ExtEscape 可能無法與系統定義的逸出正常運作。 特別是, lpszInData 是結構指標的逸出,其中包含指標的成員將會失敗。

請注意,本文中所述的行為是預期的行為,但由驅動程式符合此模型。

lpszInDatalpszOutData 所參考的變數不應相同或重疊。 如果輸入和輸出緩衝區大小變數重疊,則呼叫傳回之後可能不會包含正確的值。 為了獲得最佳結果, lpszInDatalpszOutData 應該參考不同的變數。

CHECKJPEGFORMAT 印表機逸出函式會判斷印表機是否支援列印 JPEG 影像。

在使用 CHECKJPEGFORMAT 印表機逸出函式之前,請先呼叫 QUERYESCSUPPORT 印表機逸出函式,以判斷驅動程式是否支援 CHECKJPEGFORMAT。 如需示範 使用 CHECKJPEGFORMAT 的範例程式代碼,請參閱 測試 JPEG 或 PNG 支援的印表機

CHECKPNGFORMAT 印表機逸出函式會判斷印表機是否支援列印 PNG 影像。

在使用 CHECKJPEGFORMAT 印表機逸出函式之前,請先呼叫 QUERYESCSUPPORT 印表機逸出函式,以判斷驅動程式是否支援 CHECKJPEGFORMAT。 如需範例程式代碼,請參閱 測試 JPEG 或 PNG 支援的印表機

DRAWPATTERNRECT 印表機逸出會使用 Hewlett-Packard LaserJet 或 LaserJet 兼容印表機上的 Page Control Language (PCL) 模式和規則功能,建立白色、灰階或純黑色矩形。 灰階是一種灰色圖樣,其中包含黑色和白色圖元的特定混合。

應用程式應該使用 QUERYESCSUPPORT 逸出來判斷印表機是否能夠在 使用 DRAWPATTERNRECT 逸出之前繪製模式和規則。

  • 使用 DRAWPATTERNRECT 繪製的規則不會受限於裝置內容中的裁剪區域。
  • 應用程式不應該嘗試清除 使用 DRAWPATTERNRECT 建立的模式和規則,方法是將不透明物件放在其中。

如果印表機支援白色規則,這些規則可用來清除 DRAWPATTERNRECT 所建立的模式。 如果印表機不支援白色規則,則沒有清除這些模式的方法。

如果應用程式無法使用 DRAWPATTERNRECT 逸出,而且裝置是印表機,則通常應該改用 PatBlt 函式。 請注意,如果使用 PatBlt 列印黑色矩形,應用程式應該使用 BLACKNESS 點陣運算符。 不過,如果裝置是繪圖器,應用程式應該使用 Rectangle 函式。

GET_PS_FEATURESETTING印表機逸出函式會擷取 PostScript 驅動程式之指定功能設定的相關信息。

只有在 PostScript 驅動程式處於 PostScript 中心模式或 GDI 中心模式時,才支援這個逸出函式。 若要設定 PostScript 驅動程式模式,請呼叫 POSTSCRIPT_IDENTIFY 逸出函式。

若要執行這項作業,請使用下列參數呼叫 ExtEscape 函式。

如果呼叫 CreateDC 函式之後,以及在呼叫 DeleteDC 函式之前,每當呼叫時,GET_PS_FEATURESETTING印表機逸出函式就有效。

GETTECHNOLOGY 印表機逸出函式會識別印表機驅動程式的類型。

對於非 XPSDrv 印表機,此逸出會報告驅動程式是否為 Postscript 驅動程式。

針對 XPSDrv 印表機,此逸出會報告驅動程式是否為 Microsoft XPS Document Converter (MXDC) 。 如果是,逸出會傳回以零結尾的字串 “http://schemas.microsoft.com/xps/2005/06"

PASSTHROUGH 印表機逸出函式會將數據直接傳送至印表機驅動程式。 若要執行這項作業,請使用下列參數呼叫 ExtEscape 函式。

以 GDI 為中心的模式或相容性模式的 PostScript 驅動程式支援 PASSTHROUGH 印表機逸出函式,但不支援以 PostScript 為中心的模式。 以 PostScript 為中心的模式驅動程式可以使用 POSTSCRIPT_PASSTHROUGH 逸出函式。 若要設定 PostScript 驅動程式模式,請呼叫 POSTSCRIPT_IDENTIFY 逸出函式。

對於 EPSPRINTING 或 PostScript 中心應用程式所傳送的 PASSTHROUGH 數據,PostScript 驅動程式將不會進行任何修改。 對於其他應用程式所傳送的PASSTHROUGH資料,如果PostScript驅動程式使用 BCP (二進位通訊協定) 或 TBCP (標記二進位通訊協定) 輸出通訊協定,驅動程式會在特殊字元上執行適當的 BCP 或 TBCP 引號,如「Adobe 序列和平行通訊協定規格」中所述。這表示應用程式應該傳送 ASCII 或純二進位 PASSTHROUGH 數據。

POSTSCRIPT_DATA印表機逸出函式會將數據直接傳送至印表機驅動程式。 若要執行這項作業,請使用下列參數呼叫 ExtEscape 函式。

POSTSCRIPT_DATA 函式與PASSTHROUGH逸出函式相同,不同之處在於PostScript驅動程式僅支援相容性模式。 PostScript 驅動程式在 PostScript 中心模式或 GDI 中心模式中不受支援。

PostScript 中心模式中的驅動程式可以使用 POSTSCRIPT_PASSTHROUGH 逸出函式,而 GDI 中心模式中的驅動程式可以使用 PASSTHROUGH 逸出函式。 若要設定 PostScript 驅動程式的模式,請呼叫 POSTSCRIPT_IDENTIFY 逸出函式。

POSTSCRIPT_IDENTIFY印表機逸出函式會將PostScript驅動程式設定為GDI中心模式或PostScript中心模式。

若要將驅動程式放在 GDI 中心模式或 PostScript 中心模式中,請先呼叫 QUERYESCSUPPORT 印表機逸出函式,以判斷驅動程式是否支援 POSTSCRIPT_IDENTIFY 印表機逸出函式。 如果是,您可以假設驅動程式是 PSCRIPT 5.0。 然後,在您呼叫任何其他印表機逸出函式之前,您必須先呼叫 POSTSCRIPT_IDENTIFY 並指定 PSIDENT_GDICENTRICPSIDENT_PSCENTRIC。 您必須先呼叫 QUERYESCSUPPORTPOSTSCRIPT_IDENTIFY 印表機逸出函式,才能呼叫任何其他印表機逸出函式。

注意 在 PostScript 驅動程式設定為 GDI 中心模式或 PostScript 中心模式之後,您就無法再呼叫 POSTSCRIPT_IDENTIFY 印表機逸出函式。
 
如果您未使用 POSTSCRIPT_IDENTIFY 印表機逸出函式,PostScript 驅動程式會處於相容性模式,並提供 PASSTHROUGHPOSTSCRIPT_PASSTHROUGHPOSTSCRIPT_DATA 印表機逸出函式的相同支援。

對於支援 POSTSCRIPT_PASSTHROUGHPASSTHROUGHPOSTSCRIPT_PASSTHROUGH 印表機逸出函式的 PostScript 驅動程式相同。

在 PostScript 中心模式中,應用程式會負責使用 POSTSCRIPT_PASSTHROUGH 逸出函式標記紙張的所有 PostScript 輸出。 不允許 GDI 函式。 驅動程式負責整體文件結構和印表機控制項設定。 應用程式可以使用 POSTSCRIPT_INJECTION 印表機逸出函式,將原始數據區塊插入 (包括 DSC 批注) 特定位置的作業數據流。

POSTSCRIPT_INJECTION印表機逸出函式會在 PostScript 作業資料流中指定的點插入原始數據的區塊。

PostScript 驅動程序支援 GDI 中心模式或 PostScript 中心模式支援的這個逸出函式,但不支援相容性模式。

若要設定 PostScript 驅動程式的模式,請呼叫 POSTSCRIPT_IDENTIFY 逸出函式。

若要執行這項作業,請使用下列參數呼叫 ExtEscape 函式。

驅動程式會在內部快取插入數據,並在輸出中的適當點發出。 不再需要快取的資訊時會排清。 最後, 它會在 EndDoc 呼叫之後排清。

在 GDI 中心模式中,應用程式只能使用 POSTSCRIPT_INJECTION 印表機逸出函式來插入有效的 DSC 區塊數據。 有效的 DSC 區塊必須滿足下列所有條件:

  • 它是由「線條」的整數序列所組成。
  • 每個 「line」 都必須以 「%%」 開頭。
  • 最後一行以外的每一行都必須以<CR、<LF或<CR>>< LF>>結尾,但最後一行除外。 如果最後一行不是以<CR>、<LF>或<CR><LF結尾,驅動程式會在插入數據的最後一個字節之後附加<CR><LF>>。
  • 每個“line” 都必須是 255 個字節或更少,包括 %%“,但不會計算 <CR>/<LF> 行終止。
POSTSCRIPT_PASSTHROUGH印表機逸出函式會將數據直接傳送至PostScript印表機驅動程式。

PostScript 驅動程式在 PostScript 中心模式或相容性模式中,但不支援以 GDI 為中心的模式時,這個逸出函式。

若要設定 PostScript 驅動程式的模式,請呼叫 POSTSCRIPT_IDENTIFY 逸出函式。

QUERYESCSUPPORT 印表機逸出函式會檢查印表機逸出函式的實作。

SPCLPASSTHROUGH2印表機逸出函式可讓使用 EPSPRINTING 印至 PostScript 裝置的應用程式在檔案層級儲存內容中包含私人 PostScript 程式和其他資源。

這個逸出僅支援與 Adobe Acrobat 的回溯相容性。 其他應用程式不應該使用此過時逸出。

應用程式必須先呼叫這個逸出,再呼叫 StartDoc ,讓驅動程式快取數據以在 PostScript 數據流中的正確點插入。 如果支援此逸出,驅動程式也會允許在 StartDoc 之前逸出 DOWNLOADFACE 呼叫。 驅動程式會在內部快取要插入的數據,以及 StartDoc 之前任何逸出 DOWNLOADFACE 呼叫所需的數據,並在 %%EndProlog 之前立即發出它們。 SPCLPASSTHROUGH2DOWNLOADFACE 呼叫的順序會保留其數據傳入的順序,也就是說,稍後的呼叫會在先前呼叫的數據之後產生數據輸出。 驅動程式會將 StartDoc 逸出 DOWNLOADFACE 呼叫所下載的字型視為無法在作業範圍內移除。

操作系統不會將此逸出記錄在 EMF 檔案中,因此應用程式必須使用逸出來確保這些作業的 EMF 錄製已關閉。

範例

如需範例,請參閱 調整 JPEG 或 PNG 映像的大小

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 wingdi.h (包含 Windows.h)
程式庫 Gdi32.lib
Dll Gdi32.dll

另請參閱

ESC 鍵

GetDeviceCaps

列印多工緩衝處理器 API 函式

列印