ImeLib v0.3 已發布至 CodePlex 網站,這次的主要變動如下:
- 增加對 64 位元 Windows 作業系統的支援。(v0.2 無法在 64 位元作業系統上正常執行)
- 增加 Phantom 建置腳本。
- 增加 ASP.NET 範例程式:ImeLibDemoWeb。
- ImeLib-bin-v0.3.zip :只包含可執行檔(DLL、範例程式的執行檔)。
- ImeLib-src-v0.3.zip :包含完整的原始碼。
需特別注意的是,ImeLib-bin-v0.3.zip 裡面有兩個資料夾,分別是 x86 和 x64,各代表供 32 位元和 64 位元作業系統使用的檔案。如果程式要在 64 位元的 Windows 作業系統上執行,卻使用了 32 位元的版本,程式執行時就會出現「Monoruby position array is NULL!」或「數學運算溢位」的錯誤。
如果要在 ASP.NET 應用程式中使用 ImeLib,則必須注意部署時的 IIS 設定:應用程式所屬之 application pool 的身分識別不可用預設的 ApplicationPoolIdentity 或 NETWORK SERVICE,而必須使用更高權限的帳戶(例如 LocalSystem),否則會出現錯誤:
如果要在 ASP.NET 應用程式中使用 ImeLib,則必須注意部署時的 IIS 設定:應用程式所屬之 application pool 的身分識別不可用預設的 ApplicationPoolIdentity 或 NETWORK SERVICE,而必須使用更高權限的帳戶(例如 LocalSystem),否則會出現錯誤:
發生未處理的例外狀況,處理序已終止。
Application ID: /LM/W3SVC/3/ROOT/ImeLibDemoWeb
Process ID: 5480
Exception: System.Runtime.InteropServices.COMException
Message: 錯誤 HRESULT E_FAIL 已經從呼叫傳回至 COM 元件。
StackTrace: 於 ImeLib.WinApi.MsIme.IFELanguage.Open()
於 ImeLib.MsImeFacade.OpenIFELanguage()
於 ImeLib.MsImeFacade..ctor(ImeClass imeClass)
於 _Default.GetBopomofo(Object o) 於 d:\2\x64\ImeLibDemoWeb\Default.aspx.cs: 行 35
於 System.Threading.ExecutionContext.runTryCode(Object userData)
於 System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
於 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
於 System.Threading.ThreadHelper.ThreadStart(Object obj)
以上錯誤訊息係由 Windows 事件檢視器中取得。
相關文章
相關文章
感謝大師你的ImeLib!
回覆刪除我下載了ImeLib-src-v0.3編譯與執行都沒問題。
想請問一下它可以在BackgroundWorker下run嗎?
在我ImeLibDemo專案的Form1上加了一個BackgroundWorker,想說btnGetBopomofo按下後由背景執行,結果出現"不支援此種介面 Error code: 0x80004005"。
程式碼片段:
private void btnGetBopomofo_Click(object sender, EventArgs e)
{
worker.RunWorkerAsync(txtInput.Text);
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
using (MsImeFacade ime = new MsImeFacade(ImeClass.Taiwan))
{
string[] result = ime.GetBopomofo(e.Argument.ToString());
}
}
用背景執行緒跑啊...我沒試過,但我想應該是不行吧!
回覆刪除請問一下,我輸入"唸",回傳卻是"ㄉㄧㄢˋ",是哪裡有問題呢?謝謝
回覆刪除呃..."唸" 回傳 "ㄉㄧㄢˋ",這太奇怪了,我也判斷不出來耶!
回覆刪除謝謝你的程式, 建議昇成.Net 4.0 的版本, MsIme.cs 中 MorphResult 結構直接宣告 x86 及 x64版, Facde 在叫時 先 判斷 Environment.Is64BitOperatingSystem 來叫不同的 delegate (改Func 也行啦!) 另外加包 nuget ^_^
回覆刪除