如何在不使用Edit.ImeName的情况下,设定Edit的输入法呀。没人会吗? (100分)

  • 主题发起人 主题发起人 holyknight
  • 开始时间 开始时间
H

holyknight

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在不使用Edit.ImeName的情况下,设定Edit的输入法呀。<br>最好能给出源代码。
 
为什么要这样做呢?用这个不是非常方便吗?
 
Edit1.ImeName := '输入法名称';
 
不理解。
 
这是因为,在英文Windows 2003下,这个功能不起作用。
 
通過IME設定吧<br><br>// SetActivateIme('CHAJEI.IME'); ==&gt; 切換到倉額輸入法<br>// SetActivateIme('Phon.ime'); ==&gt; 切換到注音輸入法<br>// 傳入空字串時, 切換到英數輸入法<br>// --------------------------------------------------<br>function SetActivateIme(sWanted: string): boolean;<br>var<br>&nbsp; iHandleCount: integer;<br>&nbsp; pList: array[1..nHKL_LIST] of HKL;<br>&nbsp; szImeFileName: array[0..MAX_PATH] of char;<br>&nbsp; sImeFileName: string;<br>&nbsp; bInstalled: boolean;<br>&nbsp; i: integer;<br>begin<br>&nbsp; Result := False;<br>&nbsp; sWanted := AnsiUpperCase(sWanted);<br>&nbsp; // 傳入空字串, 切成英數輸入模式<br>&nbsp; if Length(sWanted) = 0 then<br>&nbsp; begin<br>&nbsp; &nbsp; ToChinese(0, False);<br>&nbsp; &nbsp; Result := True;<br>&nbsp; &nbsp; Exit;<br>&nbsp; end;<br>&nbsp; // 看看是否安裝了這個輸入法<br>&nbsp; bInstalled := False;<br>&nbsp; iHandleCount := GetKeyboardLayoutList(nHKL_LIST, pList);<br>&nbsp; for i := 1 to iHandleCount do<br>&nbsp; begin<br>&nbsp; &nbsp; ImmGetIMEFileName(pList, szImeFileName, MAX_PATH);<br>&nbsp; &nbsp; sImeFileName := AnsiUpperCase(StrPas(szImeFileName));<br>&nbsp; &nbsp; if sImeFileName = sWanted then<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; bInstalled := True;<br>&nbsp; &nbsp; &nbsp; Break;<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>&nbsp; // 如果這個輸入法已安裝了, 讓那個輸入法的鍵盤分佈(KeyLayout)作用<br>&nbsp; if bInstalled then<br>&nbsp; begin<br>&nbsp; &nbsp; ActivateKeyboardLayout(pList, 0);<br>&nbsp; &nbsp; Result := True;<br>&nbsp; end;<br>end; { of SetActivateIme }
 
接受答案了.
 
后退
顶部