admin管理员组

文章数量:1531657

2024年3月31日发(作者:)

维普资讯

第29卷第4期 

武汉工程大学学报 

VoI.29 No.4 

2007年O7月 

J. Wuhan Inst.Tech. Ju1. 2007 

文章编号:1004—4736(2007)04—0080—04 

输入法用户词库自 动更新工具的设计与实现 

胡宏银,姚峰,何成万 

(武汉工程大学计算机科学与工程学院,湖北武汉430074) 

摘要;输入法用户词库保存用户自定义的词汇,为了方便同步用户词库设计了用户词库自动更新工具 

ImeWordsAutoUpdate.用户词汇存放在XML格式的文件中,通过wINDOwS API对该文件的操作,实现用 

户词库自动上传、下载及更新.与同类工具相比,具有操作简单、快速同步用户词库等特点.同时给出了该工具 

的设计过程,并用C#实现了主要的方法. 

关键词:输入法;用户词库;自动更新 

中图分类号:TP 311 文献标识码:A 

0 引 言 

API函数[1],本系统涉及的主要函数是 

ImmEnumRegisterWord、ImmRegisterWord 和 

随着软件开发技术的日渐成熟,一个优秀的 

ImmUnregisterWord.ImmEnumRegisterWord函 

软件产品不仅要在功能、性能等主要方面满足用 

数可以取得用户词库中所有词汇, 

户的需求,也要在操作的方便性、简单性等细节方 

ImmRegisterWord函数的功能是向自定义词库中 

面为用户着想.输入法是为中、日、韩等东亚国家 

注册一个词汇,ImmUnregisterWord函数则是从 

用户设计软件产品时必须考虑的问题,特别是一 

词库中删除一个词汇.windows操作系统自带的 

些专业性较强的领域,如医院、银行等部门有大量 

输入法具有学习功能,它能记住用户输入的新词 

的专业词汇(包括单词和语句),该领域的用户要 

汇,并自动调整同读音词汇的顺序,从而提高输入 

求能方便地向输入法中增加需要的词汇.目前已 

效率.但是windows操作系统却没有提供操作学 

有很多种输入法,它们大多提供了操作输入法用 

习词汇的API,实现此功能只有替换保存用户词 

户词库的功能,但操作步骤比较复杂,使用起来很 

库的文件. 根据用户的需要, 

不方便.项目背景是在与日本合作开发的医院管 

ImeWordsAutoUpdate工具设计了两种可选择的 

理系统中设计一个输入法辅助工具,该工具要求 

功能:更新词库和替换词库.更新词库不替换用户 

对windows操作系统自带的输入法进行二次开 

词库文件,只向用户词库中自动导入批量的自定 

发,实现用户自定义词汇批量导出和导入功能.在 

义词汇,不影响用户词库中已存在的词汇.替换词 

分析输入法用户词库特点的基础上,设计并用C# 

库则是用下载的用户词库文件替换客户端的用户 

语言实现了用户词库自动更新工具 

词库文件,用户在此之前录入或导入的词汇全部 

ImeWordsAutoUpdate. 

不存在,只能使用下载文件中的的自定义词汇,但 

1 ImeWordsAutoUpdate的设计 

是可以利用新用户词库中学习功能保存的信息. 

该医院管理系统有数十至数百个客户端, 

ImeWordsAutoUpdate工具通过自动更新这些客 

户端输入法的用户词库,使他们的输入法保持一 

致.输入法用户词汇的更新过程如图1所示.管理 

员首先录入自定义词汇,然后把它导出,并上传保 

存到服务器;客户端从服务器下载保存自定义词 

图1输入法用户词库的更新过程 

汇的文件后,导入到输入法的用户词库中. 

Fig.1 Update procedure of IME user dictionary 

实现用户自定义词汇的自动导入、导出功能, 

ImeWordsAutoUpdate工具由词库编辑模块、 

需要调用windows提供的操作输入法用户词库的 

词库导出模块和词库导入模块组成.词库编辑模 

收稿日期:2006一O4—2O 

作者简介:胡宏银(1972一),男,湖北大悟人,讲师,硕士.研究方向:软件工程 

维普资讯

第4期 胡宏银,等:输入法用户词库自动更新工具的设计与实现 

块的功能是录入词汇、修改词汇和删除词汇.录入 

pubfic static int RegisterWordEnumProc 

词汇是向用户词库中增加一个新的用户自定义词 

(string lpszReading,Ulnt32 dwStyle,string 

汇;修改词汇是指可以修改用户词库中一个词汇 

lpszString,ref object lpData) 

的读音、表示内容或词性;删除词汇则是从用户词 

功能:取出用户词库中自定义词汇的具体执 

库中删除一个指定的词汇.该模块的功能一般输 

行方法. 

入法都具备,本工具提供此项功能是为了让用户 

参数说明:lpszReading存放词汇的读音, 

更方便地编辑用户词库,同时保持该工具的完整 

dwStyle存放词汇的类型,lpszString存放词汇的 

性和独立性. 

表示内容.IpData是输出参数,存放取出的词汇信 

词库导出模块的功能是读出用户词库中所有 

息. 

词汇,并保存为XML格式的文件,然后自动把它 

返回值:词汇读取状态.1:继续取词汇;0:停 

上传到服务器中.对于替换词库功能,该模块则把 

止取词汇. 

用户词库文件上传到服务器.词库下载模块的功 

RegisterWordEnumProc 

能是把保存在服务器中的XML文件下载到客户 

(string lpszReading,Ulnt32 dwStyle,string 

端,并自动把该文件中的词汇导入到用户词库文 

lpszString,ref object lpData) 

件中.对于替换词库功能,该模块则把服务器上的 

{ 

用户词库文件下载到客户端,并用它替换本地的 

//实例化存放一个词汇信息的对象 

用户词库文件. 

Wordlnfo tmpData—new Wordlnfo(): 

客户端的用户都可以使用词库导入模块的功 

//取出词汇的读音 

能,通过选择词库更新或词库替换来更新本地输 

tmpData.Reading—lpszReading; 

入法的用户词库.而使用导出模块的功能则需要 

//取出词汇的说明 

授权,获得授权的用户可以把本地的自定义词汇 

tmpData.Description—lpszString: 

以XML文件形式或词库文件形式上传到服务 

//取出词汇的类型 

器,供其他用户下载使用. 

tmpData.Style—dwStyle: 

2 ImeWordsAutoUpdate的实现 

//把词汇信息设置到输出参数中 

((ArrayList)lpData).Add(tmpData); 

ImeWordsAutoUpdate工具用C#实现,以插 //设置返回值,表示取出所有词汇 

件的形式集成到医院管理系统中.限于篇幅,本文 

return 1; 

给出几个主要方法的实现过程. 

} 

2.1读出用户词库中的数据 

取得输入法信息 

C#中没有提供操作输入法的类,需要调用 

imm32.dll库中操作输入法的函数,C#中调用动 

态库中的方法或函数需要先用Dlllmport标志导 

实例化回调函数 

入[2 ].函数ImmEnumRegisterWord的功能是读 

出用户词库中所有自定义的词汇,该函数参数之 

调用ImmEnumRegisterword方法取得用户词 

为回调函数,用来读出词汇信息.另外,为了便 

于处理,定义了一个保存词汇信息的类 

库中自定义词汇 

Wordlnfo.Wordlnfo类有三个属性:Reading、 

Description和Style,分别保存词汇的读音、词汇的 

返回取得的词汇 

表示内容和词汇的类型. 

GetRegisterWords方法的功能是从用户词库 

图2 GetRegisterWords方法处理过程 

中取出所有词汇,其处理过程如图2所示. 

Fig.2 Process of GetRegisterWords 

回调函数是GetRegisterWords方法中调用的 

2.2更新用户词库 

关键函数,其实现过程如下所示. 

更新用户词库的方法RegisterAllWords首先 

函数名:RegisterWordEnumProc 

把XML文件中数据反序列化到数组对象中,然 

维普资讯

82 武汉工程大学学报 第29卷 

后调用imm32.dll库中的ImmRegisterWord函数 

private bool EnumThreadWndProc(IntPtr 

逐个注册.处理过程如图3所示. 

hWnd,IntPtr 1Param) 

{ 

把XML文件中词汇信息反序列化到 

ArrayList对象al中 

//取得窗体的类名 

StringBuilder strClassName:= new 

StringBuilder(256); 

取得输入法信息 

GetClassName (hWnd, strClassName, 

strClassName.Capacity); 

从al中取出一个词汇 

//找到指定的窗体(#3277O是输入法配置 

窗体的类编号,为一常量),设置用户词库 

用lmm RegisterWord函数 

if(strClassName.ToString().Equals(”# 

向用户词库中注册该词汇 

3277O”)) 

{ 

否 

全部注册? 

//向窗体发送消息,打开输入法配置页面 

SendMessage(hWnd,Ox0400+101,3,O); 

/ 

工 是 

//在输入法配置页面中找出设置用户词库文 

结束 

件的编辑框 

IntPtr hDlg=GetWindow(hWnd,5); 

图3 RegisterAllWords方法处理过程 

IntPtr hEdit — FindWindowEx(hDlg, 

Fig.3 Process of RegisterAllWords 

IntPtr.Zero,”Edit”,IntPtr.Zero); 

2.3替换用户词库 

//设置用户词库文件 

启动windows操作系统后,输入法自动被激 

SendMessage (hEdit, OxO00C,0, 

活,输入法的用户词库文件被锁定,因此不能用下 

userDictFileName); 

载的用户词库文件直接替换本地用户词库文件. 

//按下确认按钮,关闭窗体 

有两种间接的方法可以替换用户词库文件:其一、 

SendMessage(hWnd,OxOlll,1,O); 

修改注册表中用户词库的路径,使之指向下载的 

return false; 

用户词库文件,然后重新启动计算机即可.其二、 

) 

return true; 

调出输入法本身提供的修改用户词库的对话框, 

通过向对话框发送消息设置新的的用户词库.第 

) 

种方法实现简单,但需要重新启动计算机;第二 

3 ImeWordsAutoUpdate的特点 

种方法实现相对复杂,但设置用户词库时不影响 

用户其它程序的当前状态,本工具采用第二种方 

ImeWordsAutoUpdate具有以下特点:第一, 

它具有其它操作输入法用户词库工具的功能,即 

法. 

可以通过手工方式向用户词库中录入新词汇,修 

替换用户词库的方法首先取得输入法进程信 

改和删除用户词库中已有的词汇.第二,它能把本 

息,然后调用回调函数设置用户词库文件.回调函 

地用户词库中词汇信息自动导出并保存为XML 

数的实现过程如下. 

格式的文件,然后根据需要把XML文件或用户 

函数名:EnumThreadWndProc 

词库文件上传并保存到服务器中.第三,其它用户 

private bool EnumThreadWndProc(IntPtr 

根据需要可以自动从服务器下载XML文件或用 

hWnd,IntPtr 1Param) 

户词库文件,并更新本地输入法用户词库. 

功能:寻找输入法设置用户词库的对话框,并 

由于具有自动导人和导出功能,可以方便且 

设置用户词库文件. 

快速地实现输入法词汇的同步;同时,如果选择直 

参数说明:hWnd是被查找窗体的句柄, 

接更新用户词库文件,则可以同步输入法学习功 

1Param是应用程序定义的输人参数. 

能保存的信息. 

返回值:为真(true)时表示没有找到需要的窗 

体,将继续寻找;为假(false)时表示已经找到需要 

4 结 语 

的窗体,停止寻找. 输入法的用户词库为快速录入内容提供了便 

维普资讯

第4期 胡宏银,等:输入法用户词库自动更新工具的设计与实现 83 

利,而用户词库自动更新工具则能方便地导入导 

版社,2003. 

出批量的自定义词汇.ImeWordsAutoUpdate工具 

[23 

童爱红.Visual c#.NET应用教程[M].北京:北京 

已经完成了测试,并交付给日方用户使用,反映良 

交通大学出版社,2004. 

好.ImeWordsAutoUpdate是基于日文输入法的辅 

[3] 

田 原,李素若,文斌.C#程序设计[M].北京: 

助工具,稍作修改,可用于其它语言输入法用户词 

清华大学出版社,2005. 

库的自动更新. 

参考文献: 

[13张志强.Windows编程技术[M].北京:机械工业出 

The design and impl ementation of automatic update tool for 

IME user dictionary 

HU Hong—yin,YAO Feng,HE Cheng—wan 

(school of Computer and Sience Engieering,Wuhan Insitute of Technology,Wuhan 430074

China) 

Abstract:ImeWordsAutoUpdate is designed to synchronize user—defined words,which are stored in IME 

user dictionary.User—defined words are written to xml file.Reading and writing the file with windows 

api,upload,download and update of user dictionary can be realized.The tool is operable,and can rapidlv 

synchronize user dictionary comparing with other tools.In this paper,the design of ImeWordsAutoUpdate 

is discussed and some typica1 methods are implemented with C#

. 

Key words:IME;user dictionary;automatic update 

本文编辑:陈晓苹 

☆ 

(上接第69页) 

Study on compatibil ity of pOl ycarbOxyl ate—type 

superpl asticizers with cements 

GUO Ya—ni ,LIU Chang—sheng .DING Qing—jun。 

(1.School of Materials Science and Engineering,Wuhan Insitute of Technology,Wuhan 430074

China: 

2・School of Materials Science and Engineering,Wuhan University of Technology,Wuhan 430070

China) 

Abstract:Three polycarboxylate—type superplasticizers synthesized from different monomers with 

hydrophilic group such as carboxyl,sulfonate,anhydride and polyethylene oxide branched chain

four 

types of P.0 42.5 cements from different producing areas,were used to determine the compatibiiltv of 

cements with superplasticizers.At the lower water cement ratio( /too一0.29),the fluiditv of different 

cement paste with different polycarboxylate—type superplasticizers and its timing—loss of 30 min were 

tested,the slump and the slump—loss of 1 80 min of different fresh cement concrete with different 

polycarboxylate—type superplasticizers were also determined.The timing—loss of the fluiditv of different 

cement paste of 30 min is less than 13.8 percent,the slump—loss of 60 min of different fresh cement 

concrete is less than 1 5 percent.The compatibility of polycarboxylate—type Superplasticizers with different 

cements is better,the reasons were discussed. 

Key words:acrylic acid derivative;superp1asticizers;cement;compatibility 

本文编辑:萧宁 

本文标签: 用户词库词汇输入法功能