| Автор
| Сообщение |
|
|
|
Цитата |
|
Есть длл для хука клавиатуры(в каких-то советах взял).
Там можно поставить хуки на разные клавиши. Кусок кода:
VK_Up: SendMessage(H, wm_UpShow_Event, 0, 0);
Ну как можно добавить клавишу понятно, а вот как добавить условие нажатости Шифта контрола или альта?
В функцииях типа OnKeyPress всё просто - там есть массив Shift.
А тут его нет.
Вобщем вопрос: как можно узнять, нажаты ли клавиши-модификаторы? |
|
| В начало |
|
 |
|
|
 |
 NikotiN
Розовый мамонт

Возраст: 26
Знак зодиака: 
Зарегистрирован: 18.03.2005
Сообщения: 2137
|
|
|
Цитата |
|
1. а RegisterHotKey не помогает?
2. наверно, через lparam, но там какая-то мура:
---
lParam
[in] Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag. For more information about the lParam parameter, see Keystroke Message Flags. This parameter can be one or more of the following values.
0-15
Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user's holding down the key.
16-23
Specifies the scan code. The value depends on the OEM.
24
Specifies whether the key is an extended key, such as a function key or a key on the numeric keypad. The value is 1 if the key is an extended key; otherwise, it is 0.
25-28
Reserved.
29
Specifies the context code. The value is 1 if the ALT key is down; otherwise, it is 0.
30
Specifies the previous key state. The value is 1 if the key is down before the message is sent; it is 0 if the key is up.
31
Specifies the transition state. The value is 0 if the key is being pressed and 1 if it is being released. _________________ Сила дурака в том, что умный перед ним бессилен. |
|
| В начало |
|
 |
 dogma
aka Достоевский

Возраст: 27
Знак зодиака: 
Зарегистрирован: 20.12.2004
Сообщения: 1702
Откуда: Холмск
|
|
|
Цитата |
|
Посмотри WINSDK, тот что с дельфи идет. Если не найдешь, то MSDN.com. А так насколько помню, то lparam должно содержать всю маску клавишь. _________________ Bonum initium est dimidium facti
SQL-задачи (on-line) |
|
| В начало |
|
 |
 Ktf
Администратор

Возраст: 32
Знак зодиака: 
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
|
|
|
Цитата |
|
Попробуй функцию GetKeyState.
она принимает всего один параметр - виртуальный код клавиши (см. константы, начинающиеся с VK_*).
я обычно ее использую с константами VK_SHIFT, VK_CONTROL, VK_MENU.
например:
| delphi: | if GetKeyState(VK_MENU) < 0 then // кнопка Alt нажата
|
_________________ Пойду посплю перед сном. |
|
| В начало |
|
 |
|
|
|
Цитата |
|
to Ktf
Ага, вчера погуглил и нашёл это. |
|
| В начало |
|
 |
|