ImeLib v0.1 測試報告 (二):Vista

延續上一篇測試報告,這次測試的作業平台是 Windows Vista 繁體中文版,已內建微軟新注音 10.0。結果出乎意料,ImeLib 的範例程式竟無法取得注音和拼音字根,只有日文平假名/片假名的功能可正常運作。用 RegEdit 搜尋關鍵字 MSIME,只能找到 MSIME.Japan 的註冊資訊。
這情形跟我在測試 Windows Server 2008 的情況一樣,但這次的解決方法並不是安裝 Office 2007 。

透過 Google,我找到一篇微軟的技術支援文章:Ruby text is not displayed in the Phonetic Guide dialog box in Word on a computer that is running Windows Vista,其描述的狀況跟我碰到的問題很像,於是照該文的解法,將下列文字存成 Ruby.reg 並匯入 Windows registry:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\MSIME.Taiwan]
@="IMTCCORE"

[HKEY_CLASSES_ROOT\MSIME.Taiwan\CLSID]
@="{F407D01A-0BCB-4591-9BD6-EA4A71DF0799}"

[HKEY_CLASSES_ROOT\MSIME.Taiwan\CurVer]
@="MSIME.Taiwan.8"

[HKEY_CLASSES_ROOT\MSIME.Taiwan.8]
@="IMTCCORE"

[HKEY_CLASSES_ROOT\MSIME.Taiwan.8\CLSID]
@="{F407D01A-0BCB-4591-9BD6-EA4A71DF0799}"

[HKEY_CLASSES_ROOT\CLSID\{F407D01A-0BCB-4591-9BD6-EA4A71DF0799}]
@="CHT Language model"

[HKEY_CLASSES_ROOT\CLSID\{F407D01A-0BCB-4591-9BD6-EA4A71DF0799}\InprocServer32]
@=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,\
00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,00,6d,00,65,00,5c,00,69,00,\
6d,00,65,00,74,00,63,00,31,00,30,00,5c,00,69,00,6d,00,74,00,63,00,63,00,6f,\
00,72,00,65,00,2e,00,64,00,6c,00,6c,00,00,00
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT\CLSID\{F407D01A-0BCB-4591-9BD6-EA4A71DF0799}\ProgID]
@="MSIME.Taiwan.12"

[HKEY_CLASSES_ROOT\CLSID\{F407D01A-0BCB-4591-9BD6-EA4A71DF0799}\VersionIndependentProgID]
@="MSIME.Taiwan"

取注音字根的問題便解決了。

莫非......在 Windows Vista 平台上,必須安裝 Office 2007 才會註冊輸入法的 COM 元件,否則就得像上面那樣手動匯入 registry key?傑克,這真是太神奇了!

ImeLib 專案首頁:http://imelib.codeplex.com/

6 則留言:

  1. 感謝版主的文章和程式~

    小弟在Vista也遇到問題, 但又沒有 Office 2007 (只有 2003), 後來查 MSIME.Taiwan 時看到在 Vista 裡卻是 MSIME.Taiwan.2 而日文的是 MSIME.Japan.6, 所以在OpenIFELanguage 改了一下, 就可以 work 了~

    再次謝謝版主的文章和 ImeLib, 實在幫忙很大~

    請問一下, 可以用做商業用途嗎?

    回覆刪除
  2. Hi 羽成:

    ImeLib 是以 LGPL 的授權方式發布。我查了一下,可用在商業用途,只是如果你是用在客製化專案(而非套裝),必須一併將 ImeLib 完整原始碼交付給客戶,或以文件告知可向你們索取該元件的原始碼。如果是套裝軟體,因為通常都不附原始碼,這也就很難去限定了。基本上,我只是希望大家不要拿了原始碼之後,修改程式碼時「順便」把類別名稱改掉,再以不同的面貌販售,這就肯定有問題了。
    能否將你說的修改 OpenIFELanguage 的部分貼上來?我看看能不能整合到 ImeLib 裡面。我也會持續把自己最近寫的一些輔助類別慢慢加進ImeLib。

    回覆刪除
  3. Dear Mike,

    以小弟筆電的XP為例, In registry, ProgID=MSIME.Taiwan.1, VersionIndependentProgID則是MSIME.Taiwan~ 當然,它也有安裝更新,所以用MSIME.Taiwan.2也能抓到, 所以自己是暫時將s_ImeClassNames的MSIME.Taiwan改成MSIME.Taiwan.2~

    小弟也有遇到 destroy 時的問題,您提到6/11有更新,可是昨天的下載好像還是沒有喲~ :) 小弟暫時加了一個 try-catch解決, 大略看了一下,版主的 destory, close 的method 大概是遇到重覆 release 的問題~

    小弟是保險業務員, 因為小朋友的關係, 所以寫個程式給他用, 未來可能也可能當做客戶服務的項目, 謝謝版主的回覆, 版權沒有問題的話, 這樣就安心了~

    題外話, 請問版主是否知道有任何可以抓到筆劃的方式, 小弟發現標楷體比較依筆劃建立字型向量, 但還是錯的~ 小弟聽說文鼎有HiFont可是好像要用他們的程式, 才能讓字型照筆劃顯示~ 而教育部提供的 ActionScript 則是把筆劃從 db 撈出來~ 不知版主有沒有好方法~ 謝謝啦~

    回覆刪除
  4. 所以您是說,若在程式中使用 MSIME.Taiwan,在您的機器上會出錯囉?印象中這應該不會出錯呀!

    6/11 確實有更新喔,只是我沒有打包成 release 版本。如果您有用 Subversion,可以到 CodePlex 上面 check out 最新版本,就能抓到最新的版本。

    筆畫的部分我還沒有研究,也許等您發表心得囉!

    回覆刪除
  5. 不好意思,我碰到的问题正好相反,我是拼音和注音都能工作,但是加不了日文的平片假名注音。所以能不能请你把日文的注册信息发布一下呢?因为我发现我的电脑里面缺失了日文输入法的注册信息。谢谢!

    回覆刪除
  6. 我把我電腦上的 registry key 匯出,並貼到討論區了。網址是:
    http://imelib.codeplex.com/Thread/View.aspx?ThreadId=240966

    我不確定此方法能否解決你的問題,同時請小心是否造成你的系統損壞。執行前最好先做備份喔!

    回覆刪除

技術提供:Blogger.