用VC++自制王码五笔输入法安装包(转)
生活随笔
收集整理的這篇文章主要介紹了
用VC++自制王码五笔输入法安装包(转)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
用VC++自制王碼五筆輸入法安裝包 : Windows XP沒有自帶五筆字型輸入法,雖然網(wǎng)上相關(guān)輸入法很多,但一方面有些版本是共享軟件,另一方面也許很多五筆字型輸入法的老用戶最習(xí)慣用的還是老牌的“王碼五筆字型輸入法86/98版”。
微軟Office XP中包含了王碼五筆,但如果僅僅是為了使用它而運行Office XP安裝程序,就顯得有些小題大做了,更不用說是某些臨時在外面用公用電腦而又想用五筆字型輸入法的情況。于是網(wǎng)上出現(xiàn)了很多簡化安裝方法,大體可分為三個步驟:
1.拷貝輸入法文件(從Office XP光盤中或已經(jīng)安裝了“王碼五筆字型輸入法”的電腦中提取)
2.增加注冊表項
3.重啟后通過控制面板添加輸入法
整個過程中拷貝輸入法文件和增加注冊表項可以用批處理和導(dǎo)入注冊表文件來簡化操作,但必須重啟電腦才能在控制面板里添加輸入法,這同樣讓使用者覺得比較煩瑣。作為編程愛好者能不能通過寫個小程序?qū)崿F(xiàn)在不重啟全自動安裝“王碼五筆字型輸入法”呢(也就是即裝即用)?答案是肯定的!因為Office XP安裝程序做到了,這就表示微軟肯定留有一個專門用來安裝輸入法的接口,一般來說應(yīng)該是一系列API函數(shù)。
經(jīng)過一番摸索,筆者在MSDN里找到了這個可以用來安裝輸入法的API:ImmInstallIME()。OK,現(xiàn)在就開始利用它實現(xiàn)自己的“王碼五筆字型輸入法”全自動安裝程序。
一、準(zhǔn)備素材
先試著從Office XP光盤中提取“王碼五筆字型輸入法”的輸入法文件。通過Windows查找功能第一張安裝盤中查找與“WINWB”相關(guān)的文件,在OFFICE1.CAB中找到以下14個文件:WINWB86.CHM.*、WINWB86.CNT.*、WINWB86.HLP.*、WINWB86A.IME.*、WINWB86A.MB.*、WINWB86W.IME.*、WINWB86W.MB.*、WINWB98.CHM.*、WINWB98.CNT.*、WINWB98.HLP.*、WINWB98A.IME.*、WINWB98A.MB.*、WINWB98W.IME.*、WINWB98W.MB.*,其中*是很長的一串由字母、數(shù)字和下滑線組成的序列(個人認(rèn)為應(yīng)該是微軟為校驗文件內(nèi)容正確性而加上的為該文件校驗碼的后綴)。去掉這個長長的后綴,可以看到5種類型的文件。很明顯,*.CHM、*.CNT和*.HLP是輸入法幫助文件,*.MB是碼表文件,*.IME是輸入法主文件。其中*.IME和*.MB有文件名部分以A結(jié)尾和以W結(jié)尾兩個版本,經(jīng)過試驗證實了它們分別是ANSI和UNICODE兩種版本的輸入法文件。文件名部分以A結(jié)尾的文件適用于Windows 9x,以W結(jié)尾的文件適用于NT系列Windows。
提取了輸入法文件后必須讓安裝程序針對不同版本操作系統(tǒng)將它們拷貝到正確的目錄,以便調(diào)用API來進(jìn)行輸入法安裝。筆者分別在安裝了Office XP中自帶的“王碼五筆字型輸入法”的Windows 98SE和Windows XP中查找以上文件,發(fā)現(xiàn)幫助文件都存放在WindowsHELP目錄中(這里假設(shè)系統(tǒng)安裝在Windows目錄)。而主要的輸入法文件(*.IME)和碼表文件(*.MB)在Windows 9x下存放于WindowsSYSTEM目錄中,在NT系列Windows系統(tǒng)中存放于WindowsSYSTEM32目錄中。
二、相關(guān)API函數(shù)
素材準(zhǔn)備工作已經(jīng)完成,現(xiàn)在來看一下代碼編寫過程中需要用到的4個主要的API函數(shù)。
1.DWORD GetVersion(VOID)
該函數(shù)返回與當(dāng)前使用的Windows系統(tǒng)版本有關(guān)的信息。可通過判斷返回值最高位是否為1來判斷當(dāng)前是用的系統(tǒng)是NT/2000/XP還是9x/ME。
2.BOOL CopyFile(LPCTSTR lpExistFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists);
該函數(shù)將以lpExistFileName指向的字符串為文件名的文件復(fù)制為以lpNewFileName指向的字符串為文件名的新文件。這里的文件名可以包含文件路徑。最后的參數(shù)bFailIfExists決定當(dāng)新文件已存在時是否覆蓋現(xiàn)有文件,如果為FALSE,則覆蓋。
3.HKL ImmInstallIME(LPCTSTR lpszIMEFileName, LPCTSTR lpszLayoutText);
這是制作“王碼五筆字型輸入法”全自動安裝程序的關(guān)鍵函數(shù)。函數(shù)兩個參數(shù)分別為輸入法IME文件的文件名和在控制面板的是輸入法選項中顯示的輸入法名稱。函數(shù)調(diào)用后將返回一個被安裝輸入法的輸入法標(biāo)識符(或稱做輸入法句柄)。
4.BOOL ImmIsIME(HKL hKL);
該函數(shù)判斷hKL指向的輸入法是否有效。可以用ImmInstallIME函數(shù)的返回值作為該函數(shù)參數(shù),通過函數(shù)返回值來判斷輸入法是否安裝成功。
微軟Office XP中包含了王碼五筆,但如果僅僅是為了使用它而運行Office XP安裝程序,就顯得有些小題大做了,更不用說是某些臨時在外面用公用電腦而又想用五筆字型輸入法的情況。于是網(wǎng)上出現(xiàn)了很多簡化安裝方法,大體可分為三個步驟:
1.拷貝輸入法文件(從Office XP光盤中或已經(jīng)安裝了“王碼五筆字型輸入法”的電腦中提取)
2.增加注冊表項
3.重啟后通過控制面板添加輸入法
整個過程中拷貝輸入法文件和增加注冊表項可以用批處理和導(dǎo)入注冊表文件來簡化操作,但必須重啟電腦才能在控制面板里添加輸入法,這同樣讓使用者覺得比較煩瑣。作為編程愛好者能不能通過寫個小程序?qū)崿F(xiàn)在不重啟全自動安裝“王碼五筆字型輸入法”呢(也就是即裝即用)?答案是肯定的!因為Office XP安裝程序做到了,這就表示微軟肯定留有一個專門用來安裝輸入法的接口,一般來說應(yīng)該是一系列API函數(shù)。
經(jīng)過一番摸索,筆者在MSDN里找到了這個可以用來安裝輸入法的API:ImmInstallIME()。OK,現(xiàn)在就開始利用它實現(xiàn)自己的“王碼五筆字型輸入法”全自動安裝程序。
一、準(zhǔn)備素材
先試著從Office XP光盤中提取“王碼五筆字型輸入法”的輸入法文件。通過Windows查找功能第一張安裝盤中查找與“WINWB”相關(guān)的文件,在OFFICE1.CAB中找到以下14個文件:WINWB86.CHM.*、WINWB86.CNT.*、WINWB86.HLP.*、WINWB86A.IME.*、WINWB86A.MB.*、WINWB86W.IME.*、WINWB86W.MB.*、WINWB98.CHM.*、WINWB98.CNT.*、WINWB98.HLP.*、WINWB98A.IME.*、WINWB98A.MB.*、WINWB98W.IME.*、WINWB98W.MB.*,其中*是很長的一串由字母、數(shù)字和下滑線組成的序列(個人認(rèn)為應(yīng)該是微軟為校驗文件內(nèi)容正確性而加上的為該文件校驗碼的后綴)。去掉這個長長的后綴,可以看到5種類型的文件。很明顯,*.CHM、*.CNT和*.HLP是輸入法幫助文件,*.MB是碼表文件,*.IME是輸入法主文件。其中*.IME和*.MB有文件名部分以A結(jié)尾和以W結(jié)尾兩個版本,經(jīng)過試驗證實了它們分別是ANSI和UNICODE兩種版本的輸入法文件。文件名部分以A結(jié)尾的文件適用于Windows 9x,以W結(jié)尾的文件適用于NT系列Windows。
提取了輸入法文件后必須讓安裝程序針對不同版本操作系統(tǒng)將它們拷貝到正確的目錄,以便調(diào)用API來進(jìn)行輸入法安裝。筆者分別在安裝了Office XP中自帶的“王碼五筆字型輸入法”的Windows 98SE和Windows XP中查找以上文件,發(fā)現(xiàn)幫助文件都存放在WindowsHELP目錄中(這里假設(shè)系統(tǒng)安裝在Windows目錄)。而主要的輸入法文件(*.IME)和碼表文件(*.MB)在Windows 9x下存放于WindowsSYSTEM目錄中,在NT系列Windows系統(tǒng)中存放于WindowsSYSTEM32目錄中。
二、相關(guān)API函數(shù)
素材準(zhǔn)備工作已經(jīng)完成,現(xiàn)在來看一下代碼編寫過程中需要用到的4個主要的API函數(shù)。
1.DWORD GetVersion(VOID)
該函數(shù)返回與當(dāng)前使用的Windows系統(tǒng)版本有關(guān)的信息。可通過判斷返回值最高位是否為1來判斷當(dāng)前是用的系統(tǒng)是NT/2000/XP還是9x/ME。
2.BOOL CopyFile(LPCTSTR lpExistFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists);
該函數(shù)將以lpExistFileName指向的字符串為文件名的文件復(fù)制為以lpNewFileName指向的字符串為文件名的新文件。這里的文件名可以包含文件路徑。最后的參數(shù)bFailIfExists決定當(dāng)新文件已存在時是否覆蓋現(xiàn)有文件,如果為FALSE,則覆蓋。
3.HKL ImmInstallIME(LPCTSTR lpszIMEFileName, LPCTSTR lpszLayoutText);
這是制作“王碼五筆字型輸入法”全自動安裝程序的關(guān)鍵函數(shù)。函數(shù)兩個參數(shù)分別為輸入法IME文件的文件名和在控制面板的是輸入法選項中顯示的輸入法名稱。函數(shù)調(diào)用后將返回一個被安裝輸入法的輸入法標(biāo)識符(或稱做輸入法句柄)。
4.BOOL ImmIsIME(HKL hKL);
該函數(shù)判斷hKL指向的輸入法是否有效。可以用ImmInstallIME函數(shù)的返回值作為該函數(shù)參數(shù),通過函數(shù)返回值來判斷輸入法是否安裝成功。
來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/10294527/viewspace-123216/,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任。
轉(zhuǎn)載于:http://blog.itpub.net/10294527/viewspace-123216/
總結(jié)
以上是生活随笔為你收集整理的用VC++自制王码五笔输入法安装包(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 南昌航空大学961数据结构真题答案
- 下一篇: 视频质量评价 VMAF,为何让人又喜又忧