Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]?


Наверх

Титульная страница Поиск, карта сайта Написать письмо