關於擴充語言服務
擴充語言服務 (ELS) 會實作為動態連結庫 (DLL),可為應用程式指定的文字提供各種不同的語言支援功能。 這項技術包括 ELS 平臺和外掛程式,適用於透過平臺存取應用程式的數種預先定義語言服務類型。
注意
ELS 模組會自動與 Windows 7 和更新版本一起安裝。
ELS 平臺
ELS 平臺是您的應用程式與 ELS 服務之間的介面。 它提供簡單的方法,透過相同的 API 實作數種語言功能,讓應用程式能夠存取和使用特定服務。 如需 API 的詳細資訊,請參閱 擴充語言服務參考。
注意
當應用程式呼叫任何 ELS API 函式時,平台會視需要配置記憶體和資源,以便與服務通訊。 應用程式會負責再次呼叫平臺以釋放這些資源。
平臺會在應用程式虛擬記憶體空間內執行,而且所有配置的記憶體都是此空間的一部分。 因此,您的應用程式只需要連結至 ELS 元件 DLL (Elscore.dll),方法是連結至 Elscore.lib 或動態載入 Elscore.dll。
ELS 服務
針對 Windows 7 和更新版本,ELS 平臺僅支援下列預先定義的服務。
注意
未來的 ELS 版本將支援Microsoft或服務提供者所提供的其他服務。
每個服務都會與描述服務用途的服務類別相關聯。 類別是以不可本地化的字串表示。 應用程式會使用它來列舉可用的服務。 目前的服務類別如下:
- “語言偵測”
- “腳本偵測”
- “音譯”
平臺會使用服務元數據來列舉應用程式所要求的服務。 服務全域唯一標識元(GUID)、支援的輸入和輸出語言和腳本,以及應用程式可以使用服務類別目錄來列舉所需的 ELS 服務。
每個 ELS 服務都會實作為 DLL 支援的外掛程式,可安裝在作系統上,讓 ELS 平臺可以偵測並使用它。 如有需要,服務可以公開自己的子服務。
主要 ELS 作業
本節說明 ELS 平台支援的主要作業。 平台同時支援同步和異步呼叫模式。 異步呼叫模式會使用應用程式線程集區來排程處理要求的線程。
註解
由於平台支援異步模式,ELS 服務不需要自行實作這種類型的功能。
服務列舉
ELS 平臺會載入及管理所有 ELS 服務,讓應用程式作業變得透明。 應用程式會呼叫 MappingGetServices來列舉可用的服務。 如需程式設計指示,請參閱 列舉和釋放服務。
注意
建議您基於效能考慮,讓應用程式只列舉一次可用的服務。 ELS 平臺會在下一個列舉上再次檢查服務,以確保其列舉結果一律是最新的。
文字辨識
在服務列舉之後,應用程式會呼叫 MappingRecognizeText 函式,以使用特定的 ELS 服務,將輸入文字的任何文字範圍對應至輸出文字。 文字辨識的範例是使用語言偵測服務來接收文字區段,並偵測其最可能的語言。
在服務辨識文字之後,MappingRecognizeText 會傳回 MAPPING_PROPERTY_BAG 結構,並填入服務所產生的輸出數據和屬性。 若要避免記憶體流失,每當MappingRecognizeText 傳回 S_OK 時,應用程式必須呼叫 MappingFreePropertyBag 來釋放屬性包(property bag)。 通常來說,應用程式會在完成使用輸出數據後,或當由於文字的輸入區域已被修改(例如編輯或刪除)而導致輸出數據不再相關時執行操作。 釋放屬性包時,MappingFreePropertyBag 返回。
在 要求文字辨識中提供文字辨識的程式設計指示。
服務終止
當應用程式不再需要 ELS 服務時,它會在終止之前呼叫 MappingFreeServices。 如需詳細資訊,請參閱 列舉和釋放服務。
版本控制
未來的 ELS 版本將允許更新 ELS 服務。 應用程式將能夠檢查 MAPPING_SERVICE_INFO 結構的版本號碼,以偵測服務中的任何變更。
注意
ELS 應用程式不應該假設相同服務的不同版本可以擷取完全相同的結果。