在窗口的FormShow 事件中用screen.Imes取得输入法后,窗口的每个文本框虽然取得了相应的输入法,但一旦用户改变改变输入法后,就不适用了。有什么方法使得以后的输入是用户改更后的输入法。
解决方案 »
- 做系统登录的用户身份验证然后登录主窗体问题,本人新手,要设计一个管理信息系统。
- DataSource 的Next无法移动到下一条记录,怎么回事?
- Delphi2005中TTreeView节点Data挂的指针释放问题?
- 各位大侠请帮帮小弟!!!!!
- 关于variant类型计算结果的疑问?
- 用ADO连Excel的奇怪问题,请各位高手帮忙,分数不够还可以加!
- 请问:怎么样使焦点在表中(DBGRID)记录间移动时不提交
- 如何直接读写USB软驱(for 98/2000/xp)!
- 急急急!高手快来看呀!
- DBGRID怎样设置其中的一个单元格值?(不要通过改DataSet属性,要类似于Stringgird的Cells[col,row]方法改,如何做?)
- sos(在线等待)
- 内详
const
KbLayoutRegkeyFmt = 'System\CurrentControlSet\Control\Keyboard Layouts\%.8x'; // do not localize
KbLayoutRegSubkey = 'layout text'; // do not localize
var
TotalKbLayout, I, Bufsize: Integer;
KbList: array[0..63] of HKL;
qKey: HKey;
ImeFileName: array [Byte] of Char;
RegKey: array [0..63] of Char;
Imes: TStringList;
begin
Imes := TStringList.Create;
try
TotalKbLayout := GetKeyboardLayoutList(64, KbList);
for I := 0 to TotalKbLayout - 1 do
begin
if Imm32IsIME(KbList[I]) then
begin
if RegOpenKeyEx(HKEY_LOCAL_MACHINE,
StrFmt(RegKey, KbLayoutRegKeyFmt, [KbList[I]]), 0, KEY_READ,
qKey) = ERROR_SUCCESS then
try
Bufsize := SizeOf(ImeFileName);
if RegQueryValueEx(qKey, KbLayoutRegSubKey, nil, nil,
@ImeFileName, @Bufsize) = ERROR_SUCCESS then
begin
Imes.AddObject(ImeFileName, TObject(KbList[I]));
end;
finally
RegCloseKey(qKey);
end;
end;
end;
Imes.Duplicates := dupIgnore;
Imes.Sorted := True;
Memo1.Lines.Assign(Imes); //输出
finally
Imes.Free;
end;
end;