Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2009, 21:04   #1
AndersX
 
Регистрация: 28.07.2009
Сообщений: 4
По умолчанию Отображение смены языка (замена языковой панели), Delphi 7

OC - Windows xp sp3 Сорри сразу не указал Delphi 7.
1. Есть прога с модальным окошком висит поверх всех.
2. трей отсутствует так как прога (1) прописана как shell
3. как результат отсутствует языковая панелька, что не есть удобно,хочется в своем модальном окошке отображать какая раскладка.
4. как перехватить смену клавиатуры при активном окне я знаю.
5. нужно перехватить смену при НЕ активном окне.
6. Дополнительных окон запущенных пользователем не лимитировано.
7. понял что надо капать в сторону hook ? но блин с наскоку не разобрался направте стопы мои к выходу а????

Спасибо за ответы :о)

Последний раз редактировалось AndersX; 28.07.2009 в 21:13.
AndersX вне форума Ответить с цитированием
Старый 29.07.2009, 10:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

На http://delphiworld.narod.ru/_all_articles_.html
В разделе Язык - [18] есть ответы на твой вопрос
Вот в часности:http://delphiworld.narod.ru/base/cur_layout.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2009, 12:21   #3
AndersX
 
Регистрация: 28.07.2009
Сообщений: 4
По умолчанию

Спасибо :о)
(ну это не вся прога это отдельный проэкт под именно языковую потом в большой вставлю ясен пень :о)))
Вот что получилось не слишком коряво???
Да и остается одна проблемка она правда не сильно большая
Это сьем языка в консольных приложениях (но у пользователей ПОКА патих нету)

Да и в системе собственно всего два языка.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  HookHandle: hHook;

function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall;
var
  msg: PEVENTMSG;
begin
  if Code >= 0 then begin
    result := 0;
    msg := Pointer(LParam);
    with Form1 do
      case msg.message of
        WM_KEYUP: CheckBox1.Checked := false;
        WM_KEYDOWN: CheckBox1.Checked := true;
      end;
  end else
     result := CallNextHookEx(HookHandle, code, WParam, LParam);
    if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) = 67699721 then  Form1.memo1.Text := ('ENG')
      else    Form1.memo1.Text := ('Rus');



end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.FormStyle := fsStayOnTop;
  CheckBox1.Enabled := false;
  CheckBox1.Caption := 'keyboard';
  HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
  if HookHandle <> 0 then
    UnhookWindowsHookEx(HookHandle);
end;


end.

Последний раз редактировалось AndersX; 29.07.2009 в 12:46.
AndersX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не правильное отображение русского языка в delphi 2009 motaro Общие вопросы Delphi 10 25.09.2009 20:53
Запрет смены фокуса чекбокса. Mixasik Общие вопросы Delphi 7 25.02.2009 23:43
Отображение скрытых файлов и папок и отображение розширения всех файлов beegl Общие вопросы Delphi 10 14.12.2008 22:02
Алгоритм смены столбцов в массиве DeFace Общие вопросы C/C++ 23 21.11.2008 01:30
Отображение немецкого языка Djaconda Общие вопросы Delphi 3 01.12.2007 21:48