현재 설정되있는 IME 값 가져오는 방법좀 알켜주세요.,.
function TScreen.GetImes: TStrings;
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;
begin
FImes := TStringList.Create;
FDefaultIme := '';
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
FImes.AddObject(ImeFileName, TObject(KbList[I]));
if KbList[0] = FDefaultKbLayout then
FDefaultIme := ImeFileName;
end;
finally
RegCloseKey(qKey);
end;
end;
end;
TStringList(FImes).Duplicates := dupIgnore;
Result := FImes;
end;
현재이소스는 현재 설치 되있는 IME 리스트를 가져오는 코딩 입니다..
그런데 제가 해야되는건 현재 설정 되있는 IME값을 가져오는건데
고수분들 방법좀 알켜주세요~
|