代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

您现在的位置是:首页>_C#

[技术分享]C#中施用IFELanguage进行分词和注音处理

发布时间:2019-08-17浏览(2051)

    [技术分享]C#中使用IFELanguage进行分词和注音处理
    from
    http://blog.sina.com.cn/s/blog_589d32f501000aya.html
    IFELanguage这个接口MSDN里可以查到
    但C#的例子没有搜索到过
    这里贴一个和大家分享

    效果是这样:
    =qǐngnínduìníndeyánxíngfùzézūnshǒuzhōnghuárénmíngònghéguóyǒuguānfǎlǜfǎguīzūnzhòngwǎngshàngdàodé
    请(qǐng)
    您(nín)
    对(duì)
    您(nín)
    的(de)
    言行(yánxíng)
    负责(fùzé)

    遵守(zūnshǒu)
    中华人民共和国(zhōnghuárénmíngònghéguó)
    有关(yǒuguān)
    法律(fǎlǜ)

    法规(fǎguī)
    ,
    尊重(zūnzhòng)
    网上(wǎngshàng)
    道德(dàodé)

    using   System.Runtime.InteropServices;
    using   System.Runtime.CompilerServices;

    [DllImport( "ole32.dll ")]
    public   static   extern   int   CLSIDFromString(
            [MarshalAs(UnmanagedType.LPWStr)]   string   lpsz,  
            out   Guid   clsid);

    [DllImport( "ole32.dll ")]
    public   static   extern   int   CoCreateInstance(
            [In,   MarshalAs(UnmanagedType.LPStruct)]   Guid   clsid,
            IntPtr   pUnkOuter,   uint   dwClsContext,
            [In,   MarshalAs(UnmanagedType.LPStruct)]   Guid   iid,
            out   IntPtr   pv);

    [DllImport( "ole32.dll ",   CallingConvention   =   CallingConvention.StdCall)]
    public   static   extern   int   CoInitialize(IntPtr   pvReserved);

    public   const   int   FELANG_REQ_REV   =   0x00030000;
    public   const   int   FELANG_CMODE_PINYIN   =   0x00000100;
    public   const   int   FELANG_CMODE_NOINVISIBLECHAR   =   0x40000000;

    [ComImport]
    [Guid( "019F7152-E6DB-11D0-83C3-00C04FDDB82E ")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public   interface   IFELanguage
    {
            [MethodImpl(MethodImplOptions.InternalCall,  
                    MethodCodeType   =   MethodCodeType.Runtime)]
            int   Open();
            [MethodImpl(MethodImplOptions.InternalCall,
                    MethodCodeType   =   MethodCodeType.Runtime)]
            int   Close();
            [MethodImpl(MethodImplOptions.InternalCall,
                    MethodCodeType   =   MethodCodeType.Runtime)]
            int   GetJMorphResult(
                [In]   uint   dwRequest,
                [In]   uint   dwCMode,
                [In]   int   cwchInput,
                [In,   MarshalAs(UnmanagedType.LPWStr)]   string   pwchInput,
                [In]   IntPtr   pfCInfo,
                [Out]   out   IntPtr   ppResult
            );
    }

    public   const   int   CLSCTX_INPROC_SERVER   =   1;
    public   const   int   CLSCTX_INPROC_HANDLER   =   2;
    public   const   int   CLSCTX_LOCAL_SERVER   =   4;
    public   const   int   CLSCTX_SERVER   =   CLSCTX_INPROC_SERVER   |   CLSCTX_LOCAL_SERVER;