Форум: "Основная";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизКак отловить одновременное нажатие в проге клавиш 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c