![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
информацию о нажатой клавиши
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?
Пробую разные варианты.
Но отловить нажатие в другом приложении не получается