共用方式為


處理可安裝的功能和選項

重要

新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。

如需詳細資訊,請參閱 新式列印平臺列印支援應用程式設計指南

某些印表機的功能或選項可能可安裝。 例如,印表機可以接受選用的信封送紙器,這可能或可能目前未附加。 此信封送紙器必須在 GPD 檔案中以兩種方式描述:

  • 作為 InputBin 功能的選項。

  • 作為可安裝的「功能」(即使它確實是一個選項),這可讓使用者指出它是否實際安裝。

首先,若要指定信封送紙器以及自動送紙器作為 InputBin 功能的選項,可以使用下列 GPD 專案。

*Feature: InputBin
{
    *Name: "Input Bin"
    *Option: AUTO
    {
        *Name: "Automatic Feeder"
        *Command: CmdSelect {Command Attributes}
    }
    *Option: ENVFEED
    {
        *Name: "Envelope Feeder"
        *Command: CmdSelect {Command Attributes}
    }
}

若要讓信封送紙器可安裝,則需要額外的 GPD 專案,如下所示:

*InstalledOptionName: "Installed"
*NotInstalledOptionName: "Not installed"
*Feature: InputBin
{
    *Name: "Input Bin"
    *Option: AUTO
    {
        *Name: "Automatic Feeder"
        *Command: CmdSelect {Command Attributes}
    }
    *Option: ENVFEED
    {
        *Name: "Envelope Feeder"
        *Command: CmdSelect {Command Attributes}
        *Installable?: TRUE
        *InstallableFeatureName: "Optional Envelope Feeder"
    }
}

在信封送紙器 *Option 專案內,已新增兩個屬性:

  • *Installable?屬性表示選項是可安裝的。

  • *InstallableFeatureName 屬性會指定 Unidrv 顯示的文字字串,讓使用者可以指出是否真的安裝選項。

每當 *Installable? 針對功能或選項設定為 TRUE 時,Unidrv 就會為屬性表顯示建立其他功能。 (請注意,即使可安裝的項目是選項,Unidrv 也會在屬性表中為其建立功能表示法。這個 Unidrv 合成功能是由 *InstallableFeatureName 提供的字串所識別。 此功能提供兩個選項「已安裝」和「未安裝」,並可讓用戶選取其中一個選項。 字串 “Installed” 和 “Not installed” 會以 *InstalledOptionName 和 *NotInstalledOptionName 属性指定,以便在其他文字更適當時加以修改。

因此,在我們的範例中,屬性表會包含 InputBin 功能、加上標籤的 Input Bin,其中包含兩個選項、標示為自動送紙器和信封摘要器。 屬性表也會包含一個額外的功能,標示 為選擇性信封摘要器,並加上兩個選項,標示為 已安裝未安裝。 如果使用者第一次選取 [選用信封摘要器] 底下的 [已安裝],則只能選取 [輸入站] 底下的 [信封摘要器]。

有時候,必須指出某些可安裝的選項無法同時安裝,或者如果安裝某些其他可安裝選項,就無法選取特定不可安裝的選項。 若要處理這些情況,請使用指定 選項條件約束的 GPD 專案。

您無法使用 *Installable?屬性具有需要 *DisabledFeatures 專案之選擇性功能。 針對這些功能,您必須使用 [已安裝] 和 [未安裝] 選項明確指定選擇性功能。 例如,假設印表機具有選擇性雙工單位。 如果未安裝雙工單位,則必須停用雙工功能(請參閱 標準功能)。 您必須使用 [已安裝] 和 [未安裝] 選項來定義「選擇性雙工單位」功能。 在 [未安裝] *選項專案中,您會包含雙工功能的 *DisabledFeatures 專案。 您可以使用下列 GPD 專案:

*Feature: DuplexUnit
{
    *ConflictPriority: 3   *% Make priority higher than Duplex feature
    *Name: "Optional Duplexing Unit"
    *Option: Installed
    {
        *Name: "Installed"
    }
    *Option: NotInstalled
    {
        *Name: "Not Installed"
        *DisabledFeatures: LIST(Duplex)
        *Constraints: LIST (Duplex.LongEdge, Duplex.ShortEdge)
    }
}

請務必同時指定任何相關的 選項條件約束,如圖所示。