![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Vista и раскладка клавиатуры
zeleniy © (2007-11-26 12:33:00)Привет!
В моей программе есть кнопка, которая отображает текущую раскладку клавы.
Перехватывала сообщение и выводила в название кнопки.
код использовался такой:
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;
так вот в висте переключение клавы работает, но не отображаетна кнопке!!!! может есть какая функция другая, или может другое решение можно найти
zeleniy (2007-11-27 11:34:00) [1]Slym
к сожалению, тоже самое. Не работает. В Висте, по-видимому, нет WM_INPUTLANGCHANGEREQUEST сообщения. как ни старайся, во внутрь этого процесса мы не попадаем :(
Германн
Если не можешь помочь, "то налей и отойдти".
Не надо строить из себя умного и всезнающего. Здесь люди по делу общаются, а не базаром занимаются.
Моя программа рабатала и работает в любой системе. Сейчас, когда появилась Виста в проге появились маленькие глюки, которые я хочу исправить.
Да, это программа не моя. Это программа фирмы. Она ее продает и довольно успешно. Этой программе уже лет 10. Последние три года работаю только я над ней. Если ты программист, то ты знаешь что такое работать с чужим кодом. Хотя я сомневаюсь в твоих способностях...
Slym (2007-11-27 05:31:00) [2]
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;
Германн (2007-11-27 01:58:00) [3]
>
> zeleniy (26.11.07 12:33)
>
> Привет!
> В моей программе есть кнопка, которая отображает текущую
> раскладку клавы.
> Перехватывала сообщение и выводила в название кнопки.
> код использовался такой:
>
Откуда спёр исходник? И не ври что "твоя" программа работает в ХР и не работает в Висте.
Германн (2007-11-26 18:07:00) [4]
> получается "en"
> больше ему писать нечего
>
Больше ему писать некуда.
Anatoly Podgoretsky (2007-11-26 15:30:00) [5]> zeleniy (26.11.2007 14:14:04) [4]
У нас тут был один Орел, тоже чистил интегер до полной чистоты
zeleniy (2007-11-26 14:14:00) [6]да, совсем пусто ((((
может из-за вот этого AbbrLangSystem: array[0..2] of char ?
ведь первый член массива = е
второй =n
получается "en"
больше ему писать нечего
Anatoly Podgoretsky (2007-11-26 14:01:00) [7]> zeleniy (26.11.2007 13:10:02) [2]
Пусто - это что такое? Совсем пусто?
zeleniy (2007-11-26 13:10:00) [8]в системе у меня сейчас четыре языка: русс, англ, казах, и немец.
так во, ХР и другие систмы видят это меню так : англ, русс, казах, немец
а виста видяит так: русс, англ, немец, казах...
программа определяет меню языков как обычная ХР.
AbbrLangSystem[2] пусто
AbbrLangSystem[1] = n
AbbrLangSystem[0] = e
Anatoly Podgoretsky (2007-11-26 12:43:00) [9]> zeleniy (26.11.2007 12:33:00) [0]
Чему равно AbbrLangSystem[2]?