/// <summary> /// Retrieves a list of available ELS platform-supported services, along with associated /// information, according to application-specified criteria. /// </summary> /// <param name="options">Optional. A <see cref="MappingEnumOptions">MappingEnumOptions</see> object containing criteria to use during /// enumeration of services. The application specifies null for this parameter to retrieve all /// installed services.</param> /// <returns>An array of <see cref="MappingService">MappingService</see> objects matching the criteria supplied in the options /// parameter.</returns> public static MappingService[] GetServices(MappingEnumOptions options) { ThrowIfNotWin7(); IntPtr servicePointer = IntPtr.Zero; UInt32 serviceCount = 0; UInt32 hresult = 0; IntPtr guidPointer = IntPtr.Zero; try { if (options != null) { Win32EnumOptions enumOptions = options._win32EnumOption; Nullable <Guid> pGuid = options._guid; if (pGuid != null) { Guid guid = (Guid)pGuid; guidPointer = Marshal.AllocHGlobal(InteropTools.SizeOfGuid); Marshal.StructureToPtr(guid, guidPointer, false); enumOptions._pGuid = guidPointer; } hresult = Win32NativeMethods.MappingGetServices(ref enumOptions, ref servicePointer, ref serviceCount); } else { hresult = Win32NativeMethods.MappingGetServices(IntPtr.Zero, ref servicePointer, ref serviceCount); } if (hresult != 0) { throw new LinguisticException(hresult); } if ((servicePointer == IntPtr.Zero) != (serviceCount == 0)) { throw new InvalidOperationException(); } IntPtr[] services = new IntPtr[serviceCount]; ServiceCache.Instance.RegisterServices(ref servicePointer, services); MappingService[] result = new MappingService[serviceCount]; for (int i = 0; i < serviceCount; ++i) { result[i] = new MappingService(services[i]); } return(result); } finally { if (servicePointer != IntPtr.Zero) { // Ignore the result if an exception is being thrown. Win32NativeMethods.MappingFreeServicesVoid(servicePointer); } if (guidPointer != IntPtr.Zero) { Marshal.FreeHGlobal(guidPointer); } } }
/// <summary> /// Retrieves a list of available ELS platform-supported services, along with associated /// information, according to application-specified criteria. /// </summary> /// <param name="options">Optional. A <see cref="MappingEnumOptions">MappingEnumOptions</see> object containing criteria to use during /// enumeration of services. The application specifies null for this parameter to retrieve all /// installed services.</param> /// <returns>An array of <see cref="MappingService">MappingService</see> objects matching the criteria supplied in the options /// parameter.</returns> public static MappingService[] GetServices(MappingEnumOptions options) { // Throw PlatformNotSupportedException if not running on Win7 or greater ThrowIfNotWin7(); IntPtr pService = IntPtr.Zero; UInt32 dwServiceCount = 0; UInt32 hResult = 0; IntPtr guidPtr = IntPtr.Zero; try { if (options != null) { Win32EnumOptions enumOptions = options._win32EnumOption; Nullable <Guid> pGuid = options._guid; if (pGuid != null) { Guid guid = (Guid)pGuid; guidPtr = Marshal.AllocHGlobal(InteropTools.SizeOfGuid); Marshal.StructureToPtr(guid, guidPtr, false); enumOptions._pGuid = guidPtr; } hResult = Win32Methods.MappingGetServices(ref enumOptions, ref pService, ref dwServiceCount); } else { hResult = Win32Methods.MappingGetServices(IntPtr.Zero, ref pService, ref dwServiceCount); } if (hResult != 0) { throw new LinguisticException(hResult); } if ((pService == IntPtr.Zero) != (dwServiceCount == 0)) { throw new InvalidOperationException(); } IntPtr[] services = new IntPtr[dwServiceCount]; ServiceCache.Instance.RegisterServices(ref pService, services); MappingService[] result = new MappingService[dwServiceCount]; for (int i = 0; i < dwServiceCount; ++i) { result[i] = new MappingService(services[i]); } return(result); } finally { if (pService != IntPtr.Zero) { // Ignore the result if an exception is being thrown. Win32Methods.MappingFreeServices(pService); } if (guidPtr != IntPtr.Zero) { Marshal.FreeHGlobal(guidPtr); } } }
private MappingService[] GetSpecifiedMappingServices( string CategoryName ) { MappingService[] transliterationServices = null; try { MappingEnumOptions enumOptions = new MappingEnumOptions() { Category = CategoryName }; transliterationServices = MappingService.GetServices(enumOptions); } catch (LinguisticException exc) { ShowErrorMessage(String.Format("Error calling ELS: {0}, HResult: {1}", exc.ResultState.ErrorMessage, exc.ResultState.HResult)); } return transliterationServices; }
/// <summary> /// Retrieves a list of available ELS platform-supported services, along with associated /// information, according to application-specified criteria. /// </summary> /// <param name="options">Optional. A <see cref="MappingEnumOptions">MappingEnumOptions</see> object containing criteria to use during /// enumeration of services. The application specifies null for this parameter to retrieve all /// installed services.</param> /// <returns>An array of <see cref="MappingService">MappingService</see> objects matching the criteria supplied in the options /// parameter.</returns> public static MappingService[] GetServices(MappingEnumOptions options) { ThrowIfNotWin7(); IntPtr servicePointer = IntPtr.Zero; UInt32 serviceCount = 0; UInt32 hresult = 0; IntPtr guidPointer = IntPtr.Zero; try { if (options != null) { Win32EnumOptions enumOptions = options._win32EnumOption; Nullable<Guid> pGuid = options._guid; if (pGuid != null) { Guid guid = (Guid)pGuid; guidPointer = Marshal.AllocHGlobal(InteropTools.SizeOfGuid); Marshal.StructureToPtr(guid, guidPointer, false); enumOptions._pGuid = guidPointer; } hresult = Win32NativeMethods.MappingGetServices(ref enumOptions, ref servicePointer, ref serviceCount); } else { hresult = Win32NativeMethods.MappingGetServices(IntPtr.Zero, ref servicePointer, ref serviceCount); } if (hresult != 0) { throw new LinguisticException(hresult); } if ((servicePointer == IntPtr.Zero) != (serviceCount == 0)) { throw new InvalidOperationException(); } IntPtr[] services = new IntPtr[serviceCount]; ServiceCache.Instance.RegisterServices(ref servicePointer, services); MappingService[] result = new MappingService[serviceCount]; for (int i = 0; i < serviceCount; ++i) { result[i] = new MappingService(services[i]); } return result; } finally { if (servicePointer != IntPtr.Zero) { // Ignore the result if an exception is being thrown. Win32NativeMethods.MappingFreeServicesVoid(servicePointer); } if (guidPointer != IntPtr.Zero) { Marshal.FreeHGlobal(guidPointer); } } }
/// <summary> /// Retrieves a list of available ELS platform-supported services, along with associated /// information, according to application-specified criteria. /// </summary> /// <param name="options">Optional. A <see cref="MappingEnumOptions">MappingEnumOptions</see> object containing criteria to use during /// enumeration of services. The application specifies null for this parameter to retrieve all /// installed services.</param> /// <returns>An array of <see cref="MappingService">MappingService</see> objects matching the criteria supplied in the options /// parameter.</returns> public static MappingService[] GetServices(MappingEnumOptions options) { // Throw PlatformNotSupportedException if not running on Win7 or greater ThrowIfNotWin7(); IntPtr pService = IntPtr.Zero; UInt32 dwServiceCount = 0; UInt32 hResult = 0; IntPtr guidPtr = IntPtr.Zero; try { if (options != null) { Win32EnumOptions enumOptions = options._win32EnumOption; Nullable<Guid> pGuid = options._guid; if (pGuid != null) { Guid guid = (Guid)pGuid; guidPtr = Marshal.AllocHGlobal(InteropTools.SizeOfGuid); Marshal.StructureToPtr(guid, guidPtr, false); enumOptions._pGuid = guidPtr; } hResult = Win32Methods.MappingGetServices(ref enumOptions, ref pService, ref dwServiceCount); } else { hResult = Win32Methods.MappingGetServices(IntPtr.Zero, ref pService, ref dwServiceCount); } if (hResult != 0) { throw new LinguisticException(hResult); } if ((pService == IntPtr.Zero) != (dwServiceCount == 0)) { throw new InvalidOperationException(); } IntPtr[] services = new IntPtr[dwServiceCount]; ServiceCache.Instance.RegisterServices(ref pService, services); MappingService[] result = new MappingService[dwServiceCount]; for (int i = 0; i < dwServiceCount; ++i) { result[i] = new MappingService(services[i]); } return result; } finally { if (pService != IntPtr.Zero) { // Ignore the result if an exception is being thrown. Win32Methods.MappingFreeServices(pService); } if (guidPtr != IntPtr.Zero) { Marshal.FreeHGlobal(guidPtr); } } }
public static void TransliterationEnumSample() { try { MappingEnumOptions enumOptions = new MappingEnumOptions(); enumOptions.Category = "Transliteration"; MappingService[] transliterationServices = MappingService.GetServices(enumOptions); foreach (MappingService service in transliterationServices) { Console.WriteLine("Service: {0}", service.Description); } } catch (LinguisticException exc) { Console.WriteLine("Error calling ELS: {0}, HResult: {1}", exc.ResultState.ErrorMessage, exc.ResultState.HResult); } }
public static void CyrlToLatinTransUsageSample2() { try { MappingEnumOptions enumOptions = new MappingEnumOptions(); enumOptions.InputScript = "Cyrl"; enumOptions.OutputScript = "Latn"; enumOptions.Category = "Transliteration"; MappingService[] cyrlToLatin = MappingService.GetServices(enumOptions); using (MappingPropertyBag bag = cyrlToLatin[0].RecognizeText("АБВГД.", null)) { string transliterated = bag.GetResultRanges()[0].FormatData(new StringFormatter()); Console.WriteLine("Transliterated text: {0}", transliterated); } } catch (LinguisticException exc) { Console.WriteLine("Error calling ELS: {0}, HResult: {1}", exc.ResultState.ErrorMessage, exc.ResultState.HResult); } }