Текущий архив: 2003.09.11;
Скачать: CL | DM;
Вниз
информацию о нажатой клавиши Найти похожие ветки
← →
tiam (2003-07-03 11:00) [0]Как получить информацию о нажатой клавиши в другом приложении, используя GetAsyncKeyState?
Проверить сстояние всех клавиш?
← →
tiam (2003-07-03 11:42) [1]Как это осуществить через сообщения Windows?
Пробую разные варианты.
Но отловить нажатие в другом приложении не получается
← →
MBo (2003-07-03 12:20) [2]Хуки.
Статья на сайте есть.
← →
tiam (2003-07-03 12:25) [3]статью я видел, а через сообщения никак?
← →
tiam (2003-07-03 13:51) [4]Кроме того, там передается нажатая клавиша.
А как из нее получить символ?
Например, русский?
← →
tiam (2003-07-03 15:08) [5]Удалено модератором
Примечание: Offtopic
← →
tiam (2003-07-03 16:05) [6]Удалено модератором
Примечание: Offtopic
← →
AlexRush (2003-07-03 16:18) [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:20) [8]и где же в wm_char передается код самого символа, по-моему передается тот же код клавиши
← →
AlexRush (2003-07-03 16:52) [9]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-04 13:07) [10]Спасибо, но это не совсем то, здесь обрабатываются сообщения внутри приложения
Вот в той статье, где описан хук на все нажатия клавиш в системе и приходит сообщение WMUser(var Message: TMessage);
где в Message.wParam приходит код нажатой клавиши.
нужно этот код обработать (как), чтобы получить код символа, а не код клавиши.
← →
tiam (2003-07-07 09:58) [11]UP
← →
Dw (2003-07-14 20:39) [12]Так чем проблема решилась? Подскажите, если кто разобрался.
← →
Song (2003-07-14 21:55) [13]2tiam (07.07.03 09:58)
Он тебе просто показал пример. В хуке отлавливай WM_CHAR.
Страницы: 1 вся ветка
Текущий архив: 2003.09.11;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.008 c