Форум: "WinAPI";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];
Вниз
Как отловить нажатие alt Найти похожие ветки
← →
Wolfram © (2006-02-20 13:34) [0]Мне нужно отлавливать нажитие любых клавиш, в том числе сдвиговых (ctrl, alt, shift). Я использую компонент ApplicationEvents, но в него не попадает нажатие клавишы alt. Я пробовал использовать событие формы OnKeyDown, но в него не попадает Tab. Как можно решить эту проблему и отлавливать нажатие любых клавишь?
← →
n0name (2006-02-20 13:41) [1]отлавливать сообщения напрямую.
WM_KEYDOWN + WM_KEYUP
← →
Wolfram © (2006-02-20 13:48) [2]Ну, дык, в том то и дело - когда жмёшь alt WM_KEYDOWN не приходит!!!
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if msg.message=WM_KEYDOWN then ShowMessage("test");
end;
Так вот, мессага не вылетает при нажатии alt.
← →
Leonid Troyanovsky © (2006-02-20 14:04) [3]
> Wolfram © (20.02.06 13:34)
> Мне нужно отлавливать нажитие любых клавиш, в том числе
> сдвиговых (ctrl, alt, shift). Я использую компонент ApplicationEvents,
> но в него не попадает нажатие клавишы alt.
Все попадает.
procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey;
var Handled: Boolean);
begin
if msg.CharCode = vk_menu then
{Нажата клавиша Alt}
end;
--
Regards, LVT.
← →
delphi-oracle © (2006-02-20 23:25) [4]Есть такая класная функция GetKeyState
VK_MENU - альтgetkeystate(VK_MENU)<-126
альт нажатgetkeystate(VK_TAB)<-126
таб нажат
GetKeyState возвращает значение -127 или -128.
Единственная проблема - ето не событие, а просто проверяет, нажата ли клавиша. Я однажды уже делал что-то такое и обнаружил, что функция замечает все клавишы, независимо от активного приложения.
Если нажать Ctrl+левая кнопка мыши на VK_TAB, то увидиш все VK_*
← →
Wolfram © (2006-02-21 14:13) [5]Спасибо, знаю я про все эти функции, но есть еще и компонет HotKey...
Это то, что мне было нужно. :)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.022 c