處理可安裝的功能和選項
重要
新式列印平臺是 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)
}
}
請務必同時指定任何相關的 選項條件約束,如圖所示。