Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

Как отловить одновременное нажатие в проге клавиш Ctrl+Alt+S   Найти похожие ветки 

 
LordBTR   (2004-08-24 12:45) [0]

Как отловить одновременное нажатие в проге клавиш "Ctrl"+"Alt"+"S" ? Заранее спасибо.


 
Palladin ©   (2004-08-24 12:51) [1]

Ну например в TForm.OnKeyDown


 
LordBTR   (2004-08-24 13:09) [2]

Ну а конкретно - ОДНОВРЕМЕННОЕ как?
if (key=83) and (shift = [ssCtrl]) and (shift = [ssAlt]) then
не работает, т.к. shift получается либо [ssCtrl], либо [ssAlt], а одновременно то как?


 
Palladin ©   (2004-08-24 13:16) [3]

Shift это множество

if (key=83) and ([ssCtrl,ssShift]<=Shift) then


 
46_55_41_44 ©   (2004-08-24 13:20) [4]

> Palladin ©   (24.08.04 13:16) [3]

В этом случае и Shift будет работать...

if (key = 83) and (Shift = [ssCtrl, ssAlt]) then
...


 
Palladin ©   (2004-08-24 13:22) [5]

перепутал...


 
LordBTR   (2004-08-24 13:23) [6]

if (key=83) and ([ssCtrl,ssShift]<=Shift) then
при нажатии любой клавиши в комбинации с ctrl+alt+... срабатывает. Что не так?


 
Юрий Зотов ©   (2004-08-24 13:27) [7]

В таких случаях простой и компактный код дает использование пересечения множеств:

... and (Shift * [ssCtrl, ssAlt] = [ssCtrl, ssAlt]) ...


 
46_55_41_44 ©   (2004-08-24 13:33) [8]

if (key = 83) and (Shift = [ssCtrl, ssAlt]) then
попробуй так!


 
wicked ©   (2004-08-24 13:33) [9]


>  and (Shift * [ssCtrl, ssAlt] = [ssCtrl, ssAlt])

а "in" подойдет?...

по сабжу - сделать Action с таким shortcut"ом...


 
KSergey ©   (2004-08-24 13:44) [10]

> [7] Юрий Зотов ©   (24.08.04 13:27)
> В таких случаях простой и компактный код дает использование
> пересечения множеств:
>
> ... and (Shift * [ssCtrl, ssAlt] = [ssCtrl, ssAlt]) ...

Да, но на сколько я понимаю тогда и при нажатии еще и Shift это даст TRUE, что, вероятно, не соответствует задаче...


 
Юрий Зотов ©   (2004-08-24 13:51) [11]

> wicked ©   (24.08.04 13:33) [9]

in проверяет вхождение элемента, а не подмножества.

> 46_55_41_44 ©   (24.08.04 13:33) [8]
> KSergey ©   (24.08.04 13:44) [10]

Зависит от задачи (надо ли ловить строго [ssCtrl, ssAlt], или можно в сочетании еще с чем-то).


 
NAlexey ©   (2004-08-24 13:53) [12]

(GetAsyncKeyState(...) < 0) and ((GetAsyncKeyState(VK_LCONTROL) < 0) or (GetAsyncKeyState(VK_RCONTROL) < 0) and ((GetAsyncKeyState(VK_LMENU) < 0)  or (GetAsyncKeyState(VK_RMENU) < 0))


 
LordBTR   (2004-08-24 14:03) [13]

Ок. Всем спасибо. Вариант:
if (key = 83) and (Shift = [ssCtrl, ssAlt]) then
работает.


 
Dimka-gl ©   (2004-08-24 15:31) [14]

а как аналогичное провернуть не в своей программе. Через hooks по-моему только по одной клавише ловится, либо клавиша + alt



Страницы: 1 вся ветка

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
6-1089138129
SergP
2004-07-06 22:22
2004.09.12
UDP. Как отослать пакет на диапазон адресов?


1-1093628527
Lord de Mon
2004-08-27 21:42
2004.09.12
Авторан и регистр.


4-1091367247
Seldon
2004-08-01 17:34
2004.09.12
Сколько памяти кушаем?


4-1090911448
Lin7
2004-07-27 10:57
2004.09.12
Как подменить обработчик исключений?


1-1093506999
SPy
2004-08-26 11:56
2004.09.12
TShellListView - стандартное popupmenu