Текущий архив: 2008.09.07;
Скачать: CL | DM;
Вниз
Vista и раскладка клавиатуры Найти похожие ветки
← →
zeleniy (2007-11-26 12:33) [0]Привет!
В моей программе есть кнопка, которая отображает текущую раскладку клавы.
Перехватывала сообщение и выводила в название кнопки.
код использовался такой:
procedure TMainWindow.MsgHandler(var Msg: TMsg; var Handled: Boolean);
var AbbrLangSystem: array[0..2] of char;
begin
if Msg.message = WM_INPUTLANGCHANGEREQUEST then begin
ActivateKeyboardLayout(HKL_NEXT, KLF_ACTIVATE);
GetLocaleInfo(LoWord(GetKeyboardLayout(0)),LOCALE_SISO639LANGNAME ,@AbbrLangSystem,SizeOf(AbbrLangSystem)); //
bbLangs.Caption:=UpperCase(AbbrLangSystem);
end;
end;
так вот в висте переключение клавы работает, но не отображает на кнопке!!!! может есть какая функция другая, или может другое решение можно найти
← →
Anatoly Podgoretsky © (2007-11-26 12:43) [1]> zeleniy (26.11.2007 12:33:00) [0]
Чему равно AbbrLangSystem[2]?
← →
zeleniy (2007-11-26 13:10) [2]в системе у меня сейчас четыре языка: русс, англ, казах, и немец.
так во, ХР и другие систмы видят это меню так : англ, русс, казах, немец
а виста видяит так: русс, англ, немец, казах...
программа определяет меню языков как обычная ХР.
AbbrLangSystem[2] пусто
AbbrLangSystem[1] = n
AbbrLangSystem[0] = e
← →
Anatoly Podgoretsky © (2007-11-26 14:01) [3]> zeleniy (26.11.2007 13:10:02) [2]
Пусто - это что такое? Совсем пусто?
← →
zeleniy (2007-11-26 14:14) [4]да, совсем пусто ((((
может из-за вот этого AbbrLangSystem: array[0..2] of char ?
ведь первый член массива = е
второй =n
получается "en"
больше ему писать нечего
← →
Anatoly Podgoretsky © (2007-11-26 15:30) [5]> zeleniy (26.11.2007 14:14:04) [4]
У нас тут был один Орел, тоже чистил интегер до полной чистоты
← →
Германн © (2007-11-26 18:07) [6]
> получается "en"
> больше ему писать нечего
>
Больше ему писать некуда.
← →
Германн © (2007-11-27 01:58) [7]
>
> zeleniy (26.11.07 12:33)
>
> Привет!
> В моей программе есть кнопка, которая отображает текущую
> раскладку клавы.
> Перехватывала сообщение и выводила в название кнопки.
> код использовался такой:
>
Откуда спёр исходник? И не ври что "твоя" программа работает в ХР и не работает в Висте.
← →
Slym © (2007-11-27 05:31) [8]
var
KeyboardLayout:DWORD;
Lang: string;
begin
if Msg.Msg = WM_INPUTLANGCHANGEREQUEST then
begin
ActivateKeyboardLayout(HKL_NEXT, KLF_ACTIVATE);
KeyboardLayout:=LoWord(GetKeyboardLayout(0));
SetLength(Lang,GetLocaleInfo(KeyboardLayout,LOCALE_SISO639LANGNAME ,nil,0));
SetLength(Lang,GetLocaleInfo(KeyboardLayout,LOCALE_SISO639LANGNAME ,PChar(Lang),Length(Lang)));
bbLangs.Caption:=UpperCase(Lang);
end;
end;
← →
zeleniy (2007-11-27 11:34) [9]Slym
к сожалению, тоже самое. Не работает. В Висте, по-видимому, нет WM_INPUTLANGCHANGEREQUEST сообщения. как ни старайся, во внутрь этого процесса мы не попадаем :(
Германн
Если не можешь помочь, "то налей и отойдти".
Не надо строить из себя умного и всезнающего. Здесь люди по делу общаются, а не базаром занимаются.
Моя программа рабатала и работает в любой системе. Сейчас, когда появилась Виста в проге появились маленькие глюки, которые я хочу исправить.
Да, это программа не моя. Это программа фирмы. Она ее продает и довольно успешно. Этой программе уже лет 10. Последние три года работаю только я над ней. Если ты программист, то ты знаешь что такое работать с чужим кодом. Хотя я сомневаюсь в твоих способностях...
Страницы: 1 вся ветка
Текущий архив: 2008.09.07;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.009 c