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

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

информацию о нажатой клавиши


tiam ©   (2003-07-03 11:00:00) 

Как получить информацию о нажатой клавиши в другом приложении, используя GetAsyncKeyState?
Проверить сстояние всех клавиш?


Song   (2003-07-14 21:55:00) [1]

2tiam (07.07.03 09:58)
Он тебе просто показал пример. В хуке отлавливай WM_CHAR.


Dw   (2003-07-14 20:39:00) [2]

Так чем проблема решилась? Подскажите, если кто разобрался.


tiam   (2003-07-07 09:58:00) [3]

UP


tiam   (2003-07-04 13:07:00) [4]

Спасибо, но это не совсем то, здесь обрабатываются сообщения внутри приложения
Вот в той статье, где описан хук на все нажатия клавиш в системе и приходит сообщение WMUser(var Message: TMessage);
где в Message.wParam приходит код нажатой клавиши.
нужно этот код обработать (как), чтобы получить код символа, а не код клавиши.


AlexRush   (2003-07-03 16:52:00) [5]

DO YOU READ ENGLISH ??
WM_CHAR
This message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. WM_CHAR contains the character code of the key that was pressed.

WM_CHAR chCharCode = (TCHAR) wParam; lKeyData = lParam;

Parameters

chCharCode

Specifies the character code of the key.

Обьясняю популярно:


procedure TForm1.OnApplicationMessage(var Msg: TMsg; var Handled: Boolean);
begin
if msg.message=WM_CHAR
then begin
Edit1.Text:=Edit1.Text+char(msg.wParam);
Handled:=true;
end
( Sender: TObject)

DO YOU READ ENGLISH ??
WM_CHAR
This message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. WM_CHAR contains the character code of the key that was pressed.

WM_CHAR chCharCode = (TCHAR) wParam; lKeyData = lParam;

Parameters

chCharCode

Specifies the character code of the key.

Обьясняю популярно:


procedure TForm1.OnApplicationMessage(var Msg: TMsg; var Handled: Boolean);
begin
if msg.message=WM_CHAR
then begin
Edit1.Text:=Edit1.Text+char(msg.wParam);
Handled:=true;
end
else Handled:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.OnMessage:=OnApplicationMessage;
end;



Нажми баттон1 и ОСТАВИВ ФОКУС ВВОДА НА НЕЙ нажимай клавиши... переключи раскладку... нажимай клавиши.... включи CapsLock ... нажимай клавиши...


tiam   (2003-07-03 16:20:00) [6]

и где же в wm_char передается код самого символа, по-моему передается тот же код клавиши


AlexRush   (2003-07-03 16:18:00) [7]

Неуж так трудно по коду клавиши и состоянию Shift|Ctrl|Caps|etc определить "русский" символ ? Пол-часа делов-то. Если хочешь перехватывать сообщения WM_CHAR, то ставь хук на все сообщения (но это притормаживает систему)


SetWindowsHookEx({1} WH_CALLWNDPROC, {1 или WH_CALLWNDPROCRET }
{2} @MyCallWndProc, {2 или CallWndRetProc }
hMyDll,
0);


tiam   (2003-07-03 16:05:00) [8]

Удалено модератором
Примечание: Offtopic


tiam   (2003-07-03 15:08:00) [9]

Удалено модератором
Примечание: Offtopic


tiam   (2003-07-03 13:51:00) [10]

Кроме того, там передается нажатая клавиша.
А как из нее получить символ?
Например, русский?


tiam   (2003-07-03 12:25:00) [11]

статью я видел, а через сообщения никак?


MBo   (2003-07-03 12:20:00) [12]

Хуки.
Статья на сайте есть.


tiam   (2003-07-03 11:42:00) [13]

Как это осуществить через сообщения Windows?
Пробую разные варианты.
Но отловить нажатие в другом приложении не получается


Наверх

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