Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.041 c
14-1093067609
kaZaNoVa
2004-08-21 09:53
2004.09.12
TThread и через CreateThread


10-1036577372
pvnic
2002-11-06 13:09
2004.09.12
вопросы....


4-1090878975
g-l-u-k
2004-07-27 01:56
2004.09.12
Сравнение файлов на winapi и поиск различий


1-1093919119
race1
2004-08-31 06:25
2004.09.12
TLabel


4-1091091114
Alek
2004-07-29 12:51
2004.09.12
Как получить десркиптор текущего активного окна?




   Наверх