全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2284
推到 Plurk!
推到 Facebook!

当前输入法问题

 
forest
一般會員


發表:1
回覆:0
積分:0
註冊:2004-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-09 17:40:50 IP:221.220.xxx.xxx 未訂閱

我用一下方法检查当前打开的输入法时有些输入法检查不了,不知道为什么。我用的系统是xp。

function GetImeFileName: string;
var szImeFileName: array[0..MAX_PATH] of char;
begin
if ImmGetDescription(GetKeyboardLayout(0), szImeFileName, MAX_PATH) <> 0 then
result:= AnsiUpperCase(StrPas(szImeFileName))
else result:= '';
end;

cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-13 09:52:03 IP:221.220.xxx.xxx 未訂閱
难道没有人碰到这种问题吗?
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-09-18 03:51:57 IP:220.134.xxx.xxx 未訂閱

提供給您參考,我也不太會!

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,imm, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
ComboBox1: TComboBox;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
function funOpenIME(PImeName:string):Boolean;
procedure pcdCloseIME;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
// 取得輸入法清單
ComboBox1.Items.Clear;
for i:=0 to Screen.Imes.Count-1 do
begin
ComboBox1.Items.Add(Screen.Imes[i]);
end;
ComboBox1.ItemIndex:=0;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
// 開啟輸入法
funOpenIME(ComboBox1.Text);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
// 關閉輸入法
pcdCloseIME;
end;

function TForm1.funOpenIME(PImeName: string): Boolean;
var
MyHKL:HKL;
i:integer;
begin
Result:=False;
if Trim(PImeName)='' then Exit;
if Screen.Imes.Count<=0 then Exit;
i:=Screen.Imes.IndexOf(PImeName);
if i<0 then
begin
ShowMessage('"' PImeName '"');
Exit;
end;
MyHKL:=HKL(Screen.Imes.Objects[i]);
ActivateKeyboardLayout(MyHKL,KLF_ACTIVATE);
Result:=True;
end;

procedure TForm1.pcdCloseIME;
var
myhkl:hkl;
begin
myhkl:=GetKeyBoardLayOut(0);
if ImmIsIME(myhkl) then
immsimulateHotkey(handle,IME_CHotKey_IME_NonIME_Toggle);
end;

end.

------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
系統時間:2024-04-25 23:26:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!