Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
2-1217251593
alex-drob
2008-07-28 17:26
2008.09.07
Выборка из таблицы по дате


11-1190975644
Trible
2007-09-28 14:34
2008.09.07
Пример OnDrawCell


2-1216942953
Ruzzz
2008-07-25 03:42
2008.09.07
Что-то типа хеша


3-1204811873
Rax
2008-03-06 16:57
2008.09.07
Как можно узнать, какие строки показываются в DBGRID


2-1217239959
AlekseyB
2008-07-28 14:12
2008.09.07
База данных MS SQL