示例#1
0
        /// <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);
                }
            }
        }
示例#2
0
        /// <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;
 }
示例#4
0
        /// <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);
                }
            }
        }
示例#5
0
        /// <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);
                }
            }
        }
示例#6
0
 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);
     }
 }
示例#7
0
 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);
     }
 }